[英]How do I activate an inputView using a UIButton in Swift?
当用户点击 UIButton 时,我试图让 UIDatePicker 作为键盘出现。 我能够让它与文本字段一起工作,但我不喜欢光标的可见性,如果用户有外部键盘,他们可以输入任何文本。 这是我的代码:
@IBAction func dateFieldStart(sender: UITextField) {
var datePickerStartView : UIDatePicker = UIDatePicker()
datePickerStartView.datePickerMode = UIDatePickerMode.Time
sender.inputView = datePickerStartView // error when sender is UIButton
}
我尝试将发件人更改为 UIButton 但它在上面标记的行上给出了这个错误:
Cannot assign to 'inputView' in 'sender'
我试过研究它,似乎没有其他人遇到过它的问题。 任何人都知道如何使用 UIButton 或任何用户无法输入的更好用的东西来触发 UIDatePicker inputView? 谢谢!
这是原始问题的数年后,但对于可能正在寻找解决方案的任何人,您都可以继承 UIButton 并为 inputView 属性提供 getter 和 setter。 确保在 setter 中调用 becomeFirstResponder 并覆盖 canBecomeFirstResponder。 例如:
class MyButton: UIButton {
var myView: UIView? = UIView()
var toolBarView: UIView? = UIView()
override var inputView: UIView? {
get {
myView
}
set {
myView = newValue
becomeFirstResponder()
}
}
override var inputAccessoryView: UIView? {
get {
toolBarView
}
set {
toolBarView = newValue
}
}
override var canBecomeFirstResponder: Bool {
true
}
}
let tempInput = UITextField( frame:CGRect.zero )
tempInput.inputView = self.myPickerView // Your picker
self.view.addSubview( tempInput )
tempInput.becomeFirstResponder()
保留对tempInput
的引用是个好主意,这样您就可以在关闭时进行清理
我想做同样的事情,我最终只是在按钮上覆盖了一个 UITextField 并使用它的 inputView 代替。
提示:将 UITextField 的tintColor
设置为UIColor.clearColor()
以隐藏光标。
您可以为选择器屏幕外视图创建一个视图,并在需要时将其移动到屏幕上。 这是关于此的另一篇文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.