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
相关产品推荐
相关产品推荐

