You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:00:33