iOS开发:无法隐藏数字键盘上方的Done栏问题求助
解决UITextField数字键盘隐藏Done按钮栏的问题
看起来你已经找对方向了,用UITextInputAssistantItem就能搞定键盘上方的辅助按钮栏。我来帮你补全代码,顺便覆盖不同场景的处理方式:
1. 隐藏键盘上方的输入助理栏(iOS 9+)
在你的textFieldDidBeginEditing方法里,只需要把助理项的前后按钮组清空即可:
- (void)textFieldDidBeginEditing:(UITextField*)textField { UITextInputAssistantItem* item = textField.inputAssistantItem; // 清空左侧和右侧的按钮组,直接隐藏整个辅助栏 item.leadingBarButtonGroups = @[]; item.trailingBarButtonGroups = @[]; }
你也可以提前在viewDidLoad里设置,避免编辑时才生效的延迟:
- (void)viewDidLoad { [super viewDidLoad]; _txtAge.delegate = self; _txtAge.autocorrectionType = UITextAutocorrectionTypeNo; // 提前设置助理项 UITextInputAssistantItem* item = _txtAge.inputAssistantItem; item.leadingBarButtonGroups = @[]; item.trailingBarButtonGroups = @[]; [_txtAge becomeFirstResponder]; }
2. 移除自定义的Done工具栏(如果是你自己添加的)
如果你之前给UITextField设置过自定义的inputAccessoryView(比如带Done按钮的工具栏),直接把它设为nil就能移除:
_txtAge.inputAccessoryView = nil;
3. 针对系统数字键盘内部的Done按钮(特殊情况)
系统默认的UIKeyboardTypeNumberPad本身是没有Done按钮的,但如果你的场景里出现了,大概率是第三方键盘干扰或者特殊配置导致的。这种情况不建议直接遍历键盘子视图修改(系统键盘结构会随iOS版本变化),优先检查是否有第三方键盘,或者代码里是否给键盘添加了额外控件。
另外记得确认你的UITextField确实设置了数字键盘:
_txtAge.keyboardType = UIKeyboardTypeNumberPad;
内容的提问来源于stack exchange,提问作者birdcage
相关产品推荐
相关产品推荐

