【问题标题】:How to stop to open keyboard when click on time picker of inline style date picker in iOS 14?在iOS 14中单击内联样式日期选择器的时间选择器时如何停止打开键盘?
【发布时间】:2020-10-26 12:07:06
【问题描述】:

我在 iOS 14 中实现了内联样式的日期选择器。我想在关注时间选择器时禁用打开键盘。

内联样式日期选择器:

请尽快帮助我。

【问题讨论】:

  • 您是否尝试将文本字段的输入视图设置为您的日期选择器?
  • @Suhail 不,我的屏幕中没有文本字段,只有单个日期选择器视图。
  • 那么你想如何改变用户点击时间选择器的时间呢?用户不知道是滚动还是滑动它。它不会对用户友好。

标签: ios objective-c swift uidatepicker ios14


【解决方案1】:

如果您同时显示日期和时间但不让用户更改它,为什么您不只显示日期(然后将自定义日期添加为另一个视图)。

如果你还保持datePickerMode为dateAndTime,我只能帮你禁用时间视图(日期视图可以正常选择)。你可以做这样的事情(Swift 中的代码)

datePicker.subviews[0].subviews[0].subviews[2].isUserInteractionEnabled = false

但不要忘记检查每个子视图是否退出。

下面是子视图的信息

// datePicker.subviews[0] 
datePicker.subviews[0].subviews[0].subviews[2].isUserInteractionEnabled = false

// datePicker.subviews[0].subviews[0]
<_UIDatePickerCalendarContentStackView: 0x7fb9af50c3e0; frame = (2 52; 316 295.667); clipsToBounds = YES; layer = <CALayer: 0x60000052bfe0>>

// datePicker.subviews[0].subviews[0].subviews
3 elements
  - 0 : <_UIDatePickerCalendarHeaderView: 0x7fb9af50cd70; frame = (0 0; 316 0); layer = <CALayer: 0x6000005483c0>>
  - 1 : <_UIDatePickerCalendarDateView: 0x7fb9b1815370; frame = (0 0; 316 283.667); layer = <CALayer: 0x60000054ea00>>
  - 2 : <_UIDatePickerCalendarTimeView: 0x7fb9b181c800; frame = (0 283.667; 316 12); userInteractionEnabled = NO; layer = <CALayer: 0x600000540660>>

【讨论】:

  • 感谢您的回答,但您的解决方案不起作用。如果我将 isUserInteractionEnabled 设置为 false 则我无法更改时间值。
  • @YogendraPatel 如何在不显示键盘的情况下更改时间值?
  • 滚动或滑动时
  • @YogendraPatel 你找到解决方案了吗?
【解决方案2】:

您可以删除使键盘出现的点击手势识别器。它对我有用。以下是包含属性datePicker: UIDatePicker的视图的操作方法@

override func didMoveToWindow() {
    super.didMoveToWindow()
    guard let stackView = datePicker?.subviews.first?.subviews.first as? UIStackView,
        let bottomCalendarView = stackView.arrangedSubviews.last,
        let timeLabel = bottomCalendarView.subviews.first,
        let tapGesture = timeLabel.gestureRecognizers?.first else { return }
    timeLabel.removeGestureRecognizer(tapGesture)
}

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 2020-02-21
    • 2018-04-06
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多