当用户点击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或任何可能更好用户无法输入的东西?谢谢!
答案 0 :(得分:3)
我想做同样的事情,我最后只是在按钮上覆盖了一个UITextField并使用了相应的inputView。
提示:将UITextField的tintColor
设置为UIColor.clearColor()
以隐藏光标。
答案 1 :(得分:3)
let tempInput = UITextField( frame:CGRect.zero )
tempInput.inputView = self.myPickerView // Your picker
self.view.addSubview( tempInput )
tempInput.becomeFirstResponder()
保留对tempInput
的引用是个好主意,以便您可以在关闭时进行清理
答案 2 :(得分:3)
这是原始问题之后的几年,但对于可能正在寻找解决方案的任何人,您可以继承UIButton并为inputView属性提供getter和setter。一定要在setter中调用becomeFirstResponder并覆盖canBecomeFirstResponder。例如:
class MyButton: UIButton {
var myView = UIView()
var toolBarView = UIView()
override var inputView: UIView {
get {
return self.myView
}
set {
self.myView = newValue
self.becomeFirstResponder()
}
}
override var inputAccessoryView: UIView {
get {
return self.toolBarView
}
set {
self.toolBarView = newValue
}
}
override var canBecomeFirstResponder: Bool {
return true
}
}
答案 3 :(得分:0)
您可以为选择器关闭屏幕视图创建视图,并在需要时将其移动到屏幕上。这是another的帖子。