在UIToolBar上的UIBarbuttonItem的操作不叫
问题描述:
由于UIToolBar上的UIBarbuttonItem的操作没有被调用,因此我遇到了麻烦。
在以下代码中,虽然点击toolBar
上的doneBtn
,但不会调用操作doneBtnAction:
。
你有什么想法解决它吗?在UIToolBar上的UIBarbuttonItem的操作不叫
- (void)viewDidLoad {
UIPickerView *pickerView = [[UIPickerView alloc] init];
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, -44, 320, 44)];
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneBtnAction:)];
UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolBar.items = @[flex, doneBtn];
[pickerView addSubview:toolBar];
UITextField *textField = [[UITextField alloc] init];
textField.inputView = pickerView;
}
- (void)doneBtnAction:(UIBarButtonItem *)sender {
NSLog(@"%@", sender);
}
答
不要添加工具栏为选择器视图的子视图,尤其是负y原点(无触摸到工具栏,因为水龙头被剪切到选择器视图的帧)。
取而代之,使工具栏成为文本字段的inputAccessoryView
。
textField.inputAccessoryView = toolBar;
完整代码:其他
- (void)viewDidLoad {
UIPickerView *pickerView = [[UIPickerView alloc] init];
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneBtnAction:)];
UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolBar.items = @[flex, doneBtn];
UITextField *textField = [[UITextField alloc] init];
textField.inputView = pickerView;
textField.inputAccessoryView = toolBar;
}
一注 - 为什么不使用完成键入栏按钮项目的标准体系?
+0
感谢您的支持,解决了这个问题。谢谢。 –
您是否看到'doneBtn'为水龙头设置了动画效果? 'toolBar'如何定位在'pickerView'中? – hatfinch
“UIPickerView”,“UIToolbar”,“UITextField”的框架的调试视图层次结构。希望能帮到你 – SeraZheng