切换 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 - 在键盘和 UIPickerView 之间切换