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

iOS UIDatePicker:WHEEL模式下如何禁用键盘输入功能

解决UIDatePicker滚轮模式下弹出键盘的问题

iOS 14及以上最简方案

直接给UIDatePicker设置allowsAutomaticKeyboardPresentation属性为false,就能彻底阻止键盘弹出:

datePicker.allowsAutomaticKeyboardPresentation = false
datePicker.allowsAutomaticKeyboardPresentation = NO;

iOS 13及以下兼容方案

如果需要适配更早的系统,自定义一个UIDatePicker子类,重写canBecomeFirstResponder方法返回false,从根源上阻止它唤起键盘:

class NoKeyboardDatePicker: UIDatePicker {
    override var canBecomeFirstResponder: Bool {
        return false
    }
}
@interface NoKeyboardDatePicker : UIDatePicker
@end

@implementation NoKeyboardDatePicker
- (BOOL)canBecomeFirstResponder {
    return NO;
}
@end

之后不管是代码初始化还是Storyboard拖控件,用这个子类替换原生的UIDatePicker即可。

兜底方案(极端情况)

如果上面的方法都没效果,可以给UIDatePicker加个点击手势拦截器,把系统的点击事件截下来,不让它触发键盘:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDatePickerTap))
datePicker.addGestureRecognizer(tapGesture)

@objc func handleDatePickerTap() {
    // 空实现即可,目的是拦截点击事件
}
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDatePickerTap)];
[datePicker addGestureRecognizer:tapGesture];

- (void)handleDatePickerTap {
    // 空实现
}

内容的提问来源于stack exchange,提问作者ekashking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:12:12