渲染时 UIDatePicker 颠簸 day/time
UIDatePicker bumps day/time when rendered
我正在向我的应用程序添加一个 UIDatePicker,并且我正在使用 UITextField.inputView 来呈现它,而不是使用常规键盘(因此我们不会为选择器使用额外的 space查看)。
我使用 .wheels
作为 datePicker 的样式。
class ViewController: UIViewController {
@IBOutlet weak var field: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
field.delegate = self
}
}
extension ViewController : UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == field {
let datePicker = UIDatePicker()
datePicker.datePickerMode = .dateTime // or .time, or .date
datePicker.preferredDatePickerStyle = .wheels
field.inputView = datePicker
}
}
}
在 IPhone SE(第 2 次)的模拟器上测试此代码时,selecting 日期存在问题:当我尝试 select 任何日期时,它会影响第一个组成部分由 3 个元素组成:
- 如果
datePickerMode
是 .dateTime
,它会增加 3 天,
- 如果
datePickerMode
是 .date
,它会增加 3 个月,
- 如果
datePickerMode
是 .time
,它会增加 3 小时。
此外,ViewController
中的任何点击都会触发此日期碰撞行为。
我创建了一个简单的重现项目:https://github.com/egorshulga/datepicker-debugging。我在那里添加了另一个 UIDatePicker,将其放在文本字段下方,以表明对于常规选择器而言,问题 不可重现 .
我的环境:
- macOS 大苏尔 11.2.3
- UTC+3
- Xcode 12.4 (12D4e)
- 失败的模拟器:IPhone SE 2nd gen (iOS 14.4)
我试过(但没用):
- 将 UIDatePicker 作为子视图包装到视图中
- 在将其分配为
field.inputView
之前调用 datePicker.sizeToFit()
- 更改为主机上的其他时区 mac
此外,我在其他模拟器(IPhone 12 Pro Max,IPhone 8)和真实的 IPhone 11 Pro Max 上检查了这个问题 - 问题 不可重现。不幸的是,我没有 IPhone SE 2nd gen 作为检查此行为的真实设备。
IPhone SE 2nd gen 模拟器有什么问题?
嗯,据我所知,这个问题在 IPhone SE 2nd Gen 模拟器 iOs 14.5 上不再重现(最新的 Xcode 版本 12.5 12E262 于 4 月 26 日到达2021 年)。谢谢,苹果!
我正在向我的应用程序添加一个 UIDatePicker,并且我正在使用 UITextField.inputView 来呈现它,而不是使用常规键盘(因此我们不会为选择器使用额外的 space查看)。
我使用 .wheels
作为 datePicker 的样式。
class ViewController: UIViewController {
@IBOutlet weak var field: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
field.delegate = self
}
}
extension ViewController : UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == field {
let datePicker = UIDatePicker()
datePicker.datePickerMode = .dateTime // or .time, or .date
datePicker.preferredDatePickerStyle = .wheels
field.inputView = datePicker
}
}
}
在 IPhone SE(第 2 次)的模拟器上测试此代码时,selecting 日期存在问题:当我尝试 select 任何日期时,它会影响第一个组成部分由 3 个元素组成:
- 如果
datePickerMode
是.dateTime
,它会增加 3 天, - 如果
datePickerMode
是.date
,它会增加 3 个月, - 如果
datePickerMode
是.time
,它会增加 3 小时。
此外,ViewController
中的任何点击都会触发此日期碰撞行为。
我创建了一个简单的重现项目:https://github.com/egorshulga/datepicker-debugging。我在那里添加了另一个 UIDatePicker,将其放在文本字段下方,以表明对于常规选择器而言,问题 不可重现 .
我的环境:
- macOS 大苏尔 11.2.3
- UTC+3
- Xcode 12.4 (12D4e)
- 失败的模拟器:IPhone SE 2nd gen (iOS 14.4)
我试过(但没用):
- 将 UIDatePicker 作为子视图包装到视图中
- 在将其分配为
field.inputView
之前调用 - 更改为主机上的其他时区 mac
datePicker.sizeToFit()
此外,我在其他模拟器(IPhone 12 Pro Max,IPhone 8)和真实的 IPhone 11 Pro Max 上检查了这个问题 - 问题 不可重现。不幸的是,我没有 IPhone SE 2nd gen 作为检查此行为的真实设备。
IPhone SE 2nd gen 模拟器有什么问题?
嗯,据我所知,这个问题在 IPhone SE 2nd Gen 模拟器 iOs 14.5 上不再重现(最新的 Xcode 版本 12.5 12E262 于 4 月 26 日到达2021 年)。谢谢,苹果!