【发布时间】:2016-10-17 00:08:35
【问题描述】:
我正在使用 XCode 7.3 编写一个简单的 iOS 应用程序,我相信这让我可以使用 Swift 2.2。我正在尝试使用带有 UITextfield 的 UIToolbar 的 UIDatePicker,由于某种原因,我点击“取消”按钮似乎没有调用控制器上的方法 datePickerCancelled。一切都显示正常(选择器、按钮等),但事件不会触发。我尝试了几种将选择器添加到 UIBarButtonItem 的变体,但似乎没有任何效果。正如您从代码中看到的那样,这是一个非常微不足道的案例,因此它逃脱了为什么它应该如此困难。谢谢。
override func viewDidLoad() {
super.viewDidLoad()
var datePicker = UIDatePicker()
var datePickerToolbar = UIToolbar()
let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: nil)
let cancelButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Cancel, target: self, action: #selector(datePickerCancelled))
let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
datePickerToolbar.setItems([cancelButton,flexSpace, doneButton], animated: true)
datePicker.userInteractionEnabled = true
cancelButton.enabled = true
self.dateField.inputView = datePicker
self.dateField.inputAccessoryView = datePickerToolbar
}
func datePickerCancelled(){
self.datePicker.resignFirstResponder();
}` I
【问题讨论】:
-
正如马特指出的那样,我未能设置工具栏的高度。尽管我可以在选择器上方看到按钮,但它仍然无法调用事件处理程序。添加以下代码解决了我的问题 self.datePickerToolbar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44)