切换 uitextfield 的输入视图

Posted

技术标签:

【中文标题】切换 uitextfield 的输入视图【英文标题】:switching inputview for uitextfield 【发布时间】:2012-10-16 16:25:53 【问题描述】:

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

textField.inputView =wView;

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

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

【问题讨论】:

试试textField.inputView = nil; 我试了绝对没有变化。 【参考方案1】:

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

myTextField.inputView = nil
myTextField.reloadInputViews()

【讨论】:

所以唯一的解决办法是辞去文本字段作为第一响应者? 拯救了我的一天! tnx【参考方案2】:

改用这个:

-reloadInputViews (UIResponder)

【讨论】:

一个使用示例会很好。另外,请查看格式指南。 @JanDvorak,像这样使用它。 self.textView.inputView = nil; [self.textView reloadInputViews];【参考方案3】:

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

textField.inputView = nil;
[textField reloadInputViews];

希望这会有所帮助。

【讨论】:

【参考方案4】:

你需要创建一个非 nil 的 inputView。正如Apple help 所说:

如果此属性中的值为 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];

【讨论】:

【参考方案5】:

如果您在包含工具栏的文本字段中使用 datePicker,请执行以下操作以返回您的输入视图。

斯威夫特 3、4、5:

 textField.inputView = nil
 textField.inputAccessoryView = nil
 textField.reloadInputViews()

【讨论】:

以上是关于切换 uitextfield 的输入视图的主要内容,如果未能解决你的问题,请参考以下文章

如何永久地显示从UITextField输入的数据到标签?

用户反馈

UITextField - 在键盘和 UIPickerView 之间切换

UIPicker 视图的 UITextfield 问题

切换视图控制器时如何保留 UIDatePicker 和 UITextField 值?

键盘出现时如何滚动 UIScrollView?