【问题标题】:The action of UIBarbuttonItem on UIToolBar not calledUIToolBar 上的 UIBarbuttonItem 的动作没有被调用
【发布时间】:2016-01-21 01:53:54
【问题描述】:

我遇到了问题,因为 UIToolBar 上的 UIBarbuttonItem 的操作没有被调用。
在下面的代码中,虽然toolBar上的doneBtn被点击了,但是doneBtnAction:的动作没有被调用。
你有什么解决办法吗?

- (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);
}

【问题讨论】:

  • 你看到doneBtn 动画水龙头了吗? toolBar 如何在 pickerView 中定位?
  • 调试UIPickerViewUIToolbarUITextField框架的视图层次结构。希望对你有帮助

标签: ios objective-c uipickerview uibarbuttonitem uitoolbar


【解决方案1】:

不要将工具栏添加为选择器视图的子视图,尤其是具有负 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;
}

另一个注意事项 - 为什么不对栏按钮项使用标准系统完成类型?

【讨论】:

  • 感谢您的支持,此问题已解决。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多