16

我正在使用 textFieldDidBeginEditing 方法为我的文本字段制作自定义输入视图

textField.inputView =wView;

有一个按钮,我想使用它来取回键盘而不是我的自定义输入视图。任何想法如何做到这一点。

如果没有其他办法,我想尝试将文本字段作为第一响应者并再次使其成为第一响应者。但这确实会使我的项目复杂化。我想知道有没有其他方法。

4

5 回答 5

34

事情发生了很大变化,因为我早在 2012 年就写了这个答案,@yoooriii 提到的推荐方法是:

myTextField.inputView = nil
myTextField.reloadInputViews()
于 2012-10-16T17:23:59.350 回答
31

改用这个:

-reloadInputViews (UIResponder)
于 2013-04-24T20:53:25.727 回答
11

当 textField 已经是第一响应者(屏幕上的键盘)时,我可以切换回默认键盘的解决方案将他的 inputView 设置为 nil,而不是像这样调用 reloadInputViews:

textField.inputView = nil;
[textField reloadInputViews];

希望这可以帮助。

于 2014-03-21T15:21:57.163 回答
1

您需要创建一个不为零的 inputView。正如苹果帮助所说:

如果此属性中的值为 nil,则文本字段在成为第一响应者时显示标准系统键盘。将自定义视图分配给此属性会导致显示该视图。

此属性的默认值为 nil。

要实现它:

创建一个像苹果这样的属性说:

@property(readwrite, strong) UIView *inputView;

启动它:

self.inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];

将其分配给您的 textField 或 textView 的 inputView:

[textView setInputView:self.inputView];

重新加载所有输入视图:

[textView reloadInputViews];

你可以这样做textViewDidBeginEditing

- (void)textViewDidBeginEditing:(UITextView *)textView {
      self.inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
      [textView setInputView:self.inputView];
      [textView reloadInputViews];
}
于 2018-11-27T12:35:56.830 回答
0

如果您在其中有一个工具栏的文本字段中使用 datePicker,请执行以下操作以取回您的输入视图。

斯威夫特 3、4、5:

 textField.inputView = nil
 textField.inputAccessoryView = nil
 textField.reloadInputViews()
于 2021-07-24T08:24:32.030 回答