我已经搜索了一段时间,但找不到任何完全相同的内容。
我有一个 UITableView,当选择某一行时,我在下面插入另一行。 插入的行是一个自定义的 tableviewcell,其中包含 UIPickerView。 pickerview 工作正常,当选择一个项目时,它可以触发通知,将所选信息发送回 tableviewcontroller,然后删除“pickerviewcell”。那里一切都好。 但如果用户想要在 uipickerview 上来回滚动,这并不理想。因此,我在 uipickerview 中添加了一个 uitoolbar,并带有“取消和完成”按钮。
但是“取消”和“完成”按钮永远不会被触发。
从我读过的其他项目中,他们谈论了 UIFirstResponder 等,但它们都与使 uipickerview 成为 uitextfield 的 inputaccessoryview 相关。但这不是我正在做的事情。
我尝试过用代码和 Storyboard来完成这一切,每次都得到相同的结果。
下面是一些例子..
// (in my CustomTableViewCell's AwakeFromNib function)
let screenSize: CGRect = UIScreen.mainScreen().bounds
pickerView = UIPickerView(frame: CGRectMake(0,0, screenSize.width, 162))
pickerView.delegate = self
pickerView.dataSource = self
pickerToolbar.barStyle = UIBarStyle.Default
pickerToolbar.translucent = true
pickerToolbar.tintColor = UIColor.orangeColor()
pickerToolbar.sizeToFit()
pickerToolbar.userInteractionEnabled = true
pickerView.addSubview(pickerToolbar)
self.contentView.insertSubview(pickerView, atIndex: 3)
// both these logs show correct output
NSLog("picker subviews: %@", pickerView.subviews.description)
NSLog("toolbar subviews: %@", pickerToolbar.subviews.description)
截图示例: 通过单击“收件人”单元格,将插入具有选择器的新单元格。选择器本身工作得很好。但取消按钮不会被触发。它有一个从 Storyboard 链接到的 IBAction。 单击任何单元格也会正确关闭/删除选择器单元格。
最佳答案
我在 UITextview 中制作了一个选择器,并使用
-(BOOL) textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return NO;
然后使用
关闭键盘-(void)dismissKeyboard {
[_date resignFirstResponder];
}
其中 _date 是我的 UITextfield 属性
Dismissing UIPickerView with Done button on UIToolBar
这也是我发现的关于这个主题的非常好的帖子!我希望它有所帮助。
关于ios - UIToolbar 在带有 UIPickerView 的自定义 UITableViewCell 中没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703694/