键盘可见时,将输入附件视图添加到UITextField

时间:2011-05-10 16:43:06

标签: iphone ipad uiview uitextfield

我想将输入附件视图添加到UITextField,同时它是第一个响应者,即显示键盘。显然,在此状态下为UIView属性分配inputAccessoryView不会显示此视图。我必须首先关闭键盘并重新选择UITextField

有没有办法在不解除和重新选择的情况下添加输入附件视图?

5 个答案:

答案 0 :(得分:15)

您可以在textView上使用reloadInputViews来执行此操作

(我知道这是一个老帖子,但可能对其他人有帮助)

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

我只想动态添加/删除输入附件视图。 我最终只是这样做了:

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

答案 3 :(得分:0)

编辑:根据@ fabian789,这种方法不起作用。 YMMV。


您可以尝试拨打

[myTextField setNeedsLayout];
[myTextField setNeedsRedraw];

强制它重绘自己?

免责声明:这就是我想尝试的,我不知道它是否会起作用!

答案 4 :(得分:0)

我还必须在文本更改时添加/删除inputAccessoryView,因此我最终更改了inputAccessoryView.alpha值,使其看起来已被删除。

动画是可选的,但它使过渡看起来更好:

Swift 4

UIView.animate(withDuration: 0.3) {
  myTextFieldOrTextView.inputAccessoryView?.alpha = 0      
}