【发布时间】:2019-08-15 17:45:51
【问题描述】:
我有简单的代码,将 DatePicker 设置为 UIViewController 的输入视图
var datePicker = UIDatePicker()
override var inputView: UIView? {
return datePicker
}
override var canBecomeFirstResponder: Bool {
return true
}
我必须在 viewDidAppear 上写self.resignFirstResponder 来强制隐藏键盘(日期选择器),为什么 UIViewController 会自动成为第一响应者?
【问题讨论】:
-
当你覆盖 canBecomeFirstResponder 时 inputView 的默认值为 nil 然后你告诉编译器当 View 出现在窗口中时 ViewController 将是 FirstResponder ,因此它将调用“inputView”getter 属性以在底部显示它。这与我们过去对“UITextField”所做的行为相同。
-
@MuhammadWaqasBhati 感谢您的回复,实际上我仍然不明白
canBecomeFirstResponder如何调用becomeFirstResponder,因为使用 canBecomeFirstResponder` 我们告诉编译器此类可以成为未来的第一响应者而不是告诉屏幕出现后立即成为第一响应者。 -
@MuhammadWaqasBhati 对于 UItextField,我们要么必须点击它,要么需要调用 becomeFirstResponder,我从未见过 UITextField 自动成为第一响应者并打开键盘
标签: swift uiviewcontroller becomefirstresponder inputview