显示不带文本字段的iOS屏幕键盘

显示不带文本字段的iOS屏幕键盘,ios,iphone,keyboard,Ios,Iphone,Keyboard,我有一个特别的iPad应用程序,即使没有UITextField作为第一响应者,屏幕上的键盘也必须保持可见 据推测,键盘的出现是由UITS控制的 因此,我让我的ViewController实现UITRAITS协议,并在其中添加了以下方法: - (UITextAutocapitalizationType) autocapitalizationType { return UITextAutocapitalizationTypeNone; } - (UITextAutocorrectionType) a

我有一个特别的iPad应用程序,即使没有UITextField作为第一响应者,屏幕上的键盘也必须保持可见

据推测,键盘的出现是由UITS控制的

因此,我让我的ViewController实现UITRAITS协议,并在其中添加了以下方法:

- (UITextAutocapitalizationType) autocapitalizationType { return UITextAutocapitalizationTypeNone; }
- (UITextAutocorrectionType) autocorrectionType { return UITextAutocorrectionTypeNo; }
- (UITextSpellCheckingType) spellCheckingType { return UITextSpellCheckingTypeNo; }
- (UIKeyboardAppearance) keyboardAppearance { return UIKeyboardAppearanceDefault; }
- (UIKeyboardType) keyboardType { return UIKeyboardTypeAlphabet; }
- (UIReturnKeyType) returnKeyType { return UIReturnKeyDefault; }
- (BOOL) enablesReturnKeyAutomatically { return NO; }
- (BOOL) secureTextEntry { return NO; }
最后,在控制器的
视图中,我调用了
[self becomeFirstResponder]

但这显然不足以打开键盘。我错过了什么

我甚至收到了对我的
键盘外观
方法的调用,但不管怎样,键盘都不会出现(或在它出现时消失)


我想知道我是否必须实现另一个协议,例如用于接收键盘输入的协议。那会是哪一个呢?

结果表明,仅仅实现UITEmputraits是不够的,但需要实现UITEmputraits协议,这样才能对键盘上的键入做出反应

将my view controller接口声明中的已实现协议更改为
UITEMITEPUT
,并添加这些属性后,将出现键盘-仅用于键入需要实现的更多方法:

@property (nonatomic, readonly) UITextRange *markedTextRange;
@property (readwrite, copy) UITextRange *selectedTextRange;

使用
becomeFirstResponder
方法从视图控制器显示键盘的一个更快的解决方案是,在视图控制器中实现
UIKeyInput
协议并返回
YES
-(BOOL)canBecomeFirstResponder
<在这种情况下,代码>UIKeyInput协议方法将用于处理键盘操作


另外,请小心返回
YES
,因为
只能在需要时成为第一响应者
,以避免出现奇怪的行为。

您读过这篇文章吗?也许有帮助。[[1]:为什么不将UITextView添加到可见边界之外的视图中(或将其隐藏,或将其alpha设置为0),然后调用[textView becomeFirstResponder],是的,在我的特殊情况下,使用隐藏文本字段是有效的。但是,我仍然想知道如何编写不依赖UITextField的自定义编辑字段。我想其他人可能也希望得到答案。@Stefan视图控制器没有“可编辑”属性,并且当我将一个添加到我的中时,返回“是”,这也不会使它起作用。抱歉,我目前无法检查您的建议。但是如果其他人要投票并确认您的建议,我将给您打勾。