我正在使用
在textFieldDidBeginEditing方法中为我的textfield创建自定义输入视图textField.inputView =wView;
有一个按钮用于我想要取回键盘而不是我的自定义输入视图。不知道怎么做。
如果没有其他的话,我想尝试将辞去文本字段作为第一响应者并再次使其成为第一响应者。但这会让我的项目变得复杂。我想知道是否还有其他办法!
我在stackoverflow中尝试了其他帖子,但没有用。
任何帮助都将不胜感激。
由于
答案 0 :(得分:30)
改为使用这个:
-reloadInputViews (UIResponder)
答案 1 :(得分:24)
事情发生了很大变化,因为我在2012年写了这个答案,@ yoooriii提到的推荐方法是:
myTextField.inputView = nil
myTextField.reloadInputViews()
答案 2 :(得分:10)
当textField已经是第一个响应者(屏幕上的键盘)时,我可以切换回默认键盘的解决方案是将inputView设置为nil而不是像这样调用reloadInputViews:
textField.inputView = nil;
[textField reloadInputViews];
希望这有帮助。
答案 3 :(得分:1)
您需要创建一个非null的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];
重新加载所有inputViews:
[textView reloadInputViews];
您可以在textViewDidBeginEditing
中进行操作:
- (void)textViewDidBeginEditing:(UITextView *)textView {
self.inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
[textView setInputView:self.inputView];
[textView reloadInputViews];
}
答案 4 :(得分:0)
如果您在带有工具栏的文本字段中使用 datePicker,请执行以下操作以返回您的输入视图。
斯威夫特 3、4、5:
textField.inputView = nil
textField.inputAccessoryView = nil
textField.reloadInputViews()
答案 5 :(得分:-2)
textField.ResignFirstResponder();
textField.inputView = wView;
textField.BecomeFirstResponder();
试试这个。