我想在UITextField
上添加输入附件视图,同时它是第一个响应者,即显示键盘。显然,在此状态下将UIView
指定给inputAccessoryView
属性不会显示此视图。我必须首先解雇键盘并重新选择UITextField
。
有没有办法在不解除和重新选择的情况下添加输入附件视图?
如果可能的话,只分配一次inputAccessoryView
。如果您需要进行自定义,并且只能确定在成为第一个响应者之前已经很晚,那么我仍然只会分配一次。但是在inputAccessoryView
方法UITextFieldDelegate
中自定义textFieldShouldBeginEditing:
的子视图。像这样:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
[self setupInputAccessoryViewForTextField:textField];
return YES;
}
您可以在textView上使用reloadInputViews来执行此操作
(我知道这是一个老帖子,但可能对其他人有帮助)
我只想动态添加/删除输入附件视图。我最终只是这样做:
[self.responceTextView resignFirstResponder];
self.responceTextView.inputAccessoryView = keyBoardToolbar;
[self.responceTextView becomeFirstResponder];
编辑:根据@ fabian789这种方法不起作用。因人而异。
你可以尝试打电话
[myTextField setNeedsLayout];
[myTextField setNeedsRedraw];
强迫它重绘自己?
免责声明:这就是我想尝试的,我不知道它是否会起作用!
我还必须在文本更改时添加/删除inputAccessoryView
,所以我最终更改了inputAccessoryView.alpha
值以使其看起来被删除。
动画是可选的,但它使转换看起来更好:
斯威夫特4
UIView.animate(withDuration: 0.3) {
myTextFieldOrTextView.inputAccessoryView?.alpha = 0
}