SwiftUI DatePicker:有没有办法让他们不能使用键盘来编辑字段?

Posted

技术标签:

【中文标题】SwiftUI DatePicker:有没有办法让他们不能使用键盘来编辑字段?【英文标题】:SwiftUI DatePicker: Is there a way to make it so they can't use the keyboard to edit the fields? 【发布时间】:2021-06-07 00:19:30 【问题描述】:

我有一个应用程序,我正在使用多个日期选择器随时在屏幕上使用。我让选择器自己工作,但我不希望键盘显示以进行编辑。

我更喜欢让用户使用滚轮而不是键盘来更改时间。我一直在寻找阻止键盘出现的方法,但我没有找到解决方案。

我基本上想要一个较小版本的旧图形选择轮。

这是我的选择器的代码:

struct TimePicker: View 
    @Binding var time: Date
    
    var body: some View 
        
        DatePicker("", selection: $time, displayedComponents: .hourAndMinute)
            .datePickerStyle(GraphicalDatePickerStyle())  
    

任何想法将不胜感激。

【问题讨论】:

为什么?这是一种糟糕的用户体验。我更喜欢在字段之间切换并输入数字。 这是我想移除的 ios 设备上的弹出式键盘。我同意在字段之间切换更容易,但这不是 iOS 设备上的选项。 好的,但这不应该是用户的选择吗?如果键盘挡住了,有一个按钮可以放下键盘。 我通常会同意,但键盘在 SwiftUI 中有一些奇怪的不一致行为。有些东西在模拟器中可以正常工作,但不能在我的 iPad 上工作。同样的事情在 iPhone 上也可以正常工作,但会阻止您正在编辑的部分。我确信我可以找到解决所有正在发生的问题的方法,但是如果键盘没有在 iOS 设备上弹出会容易得多。 【参考方案1】:

答案在文档中并不明显,但实际上非常简单。

只需替换.datePickerStyle(GraphicalDatePickerStyle())

与:.datePickerStyle(WheelDatePickerStyle())

这样:

struct TimePicker: View 
@Binding var time: Date

var body: some View 
    
    DatePicker("", selection: $time, displayedComponents: .hourAndMinute)
        .datePickerStyle(WheelDatePickerStyle())  

【讨论】:

以上是关于SwiftUI DatePicker:有没有办法让他们不能使用键盘来编辑字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中更改 DatePicker 字体粗细

SwiftUI:如何设置时间选择器的范围以包含午夜?

如何在 SwiftUI 中将 DatePicker 放入 ContextMenu

有没有办法在编辑时将 TextField 的光标移动到文本的末尾?- SwiftUI

在打印语句 SwiftUI 上显示 DatePicker hourAndMinute

在 SwiftUI 中创建具有特定日期的 DatePicker