2011-05-10 92 views
4

我想在第一响应者(即显示键盘)时向UITextField添加输入附件视图。显然,在此状态下将UIView分配给inputAccessoryView属性不会显示此视图。我必须先解雇键盘并重新选择UITextField在键盘可见时向UITextField添加输入附件视图

有没有方法可以添加输入附件视图而不关闭和重新选择?

回答

5

如果可能,只分配inputAccessoryView一次。如果您需要对其进行定制,并且只能确定在成为第一响应者之前非常晚,那么我仍然只会分配一次。但在UITextFieldDelegate方法textFieldShouldBeginEditing:中自定义inputAccessoryView的子视图。像这样:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [self setupInputAccessoryViewForTextField:textField]; 
    return YES; 
} 
+0

好主意,谢谢。我现在删除并重新添加子视图。 – fabian789 2011-05-11 14:18:24

0

编辑:根据@ fabian789此方法不起作用。因人而异。


你可以尝试调用

[myTextField setNeedsLayout]; 
[myTextField setNeedsRedraw]; 

,迫使它重绘自己?

声明:这正是我想要的,我不知道它会起作用!

+0

+1不错的想法,但不幸的是它不起作用。 – fabian789 2011-05-10 17:25:55

2

我只是想动态地添加/删除输入附件视图。 最后我简单地做这样的:

[self.responceTextView resignFirstResponder]; 
self.responceTextView.inputAccessoryView = keyBoardToolbar; 
[self.responceTextView becomeFirstResponder]; 
+0

,它会弄乱键盘行为。 – manmal 2012-11-20 12:16:16

+1

不适合我,它不。也许你应该用你使用的代码开始一个问题。 – Darren 2012-11-20 15:24:37

+0

我的问题根本无法解决没有私人API(我发现一个解决方法,虽然)。但是,当您的代码处于未锁定模式时,让我的键盘左右摇晃。这可能与textview监听器有关,但仍然 - 这是一种黑客攻击。 – manmal 2012-11-21 15:30:16

14

您可以使用reloadInputViews上的TextView做

(我知道这是一个老的文章,但可能帮助别人)

+0

它确实帮了我很多,谢谢! – Aziz 2015-06-15 01:39:43

+0

这应该肯定是被接受的答案! – borchero 2015-12-13 21:37:56

相关问题