为什么UIBarButtonItem在UIToolbar中没有获得点击设置为UITextField的inputAccessoryView? [英] Why UIBarButtonItem not getting clicks in UIToolbar set as inputAccessoryView of UITextField?

查看:142
本文介绍了为什么UIBarButtonItem在UIToolbar中没有获得点击设置为UITextField的inputAccessoryView?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

UIBarItem不会响应UIToolbar中的点击,该点击在UITextField上设置为inputAccessoryView。

此按钮不会显示点击动画我试着点击它,回调不会被调用。
我的设置如下:

The button does not show click animation when I try to click it, callback does not get called. My setup looks like:

@interface MyViewController()
@property (weak, nonatomic) IBOutlet UITextField *closeDateTextField;
@property (strong, nonatomic) UIToolbar * datePickerToolbar;
@end

我使用按钮设置工具栏:

I setup toolbar with button:

- (void)viewDidLoad {

    self.datePickerToolbar = [[UIToolbar alloc] init];
    UIBarButtonItem * doneBtn =
        [[UIBarButtonItem alloc]
                initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                target:self
                action:@selector(hidePicker:)];

向工具栏添加按钮,并将工具栏设置为 inputAccessoryView UITextField

add button to toolbar and set toolbar as inputAccessoryView of UITextField:

    [self.datePickerToolbar setItems:@[doneBtn] animated:NO];
    self.closeDateTextField.inputAccessoryView = self.datePickerToolbar;
}

当我点击 closeDateTextField 键盘在工具栏中显示一个完成按钮,但按钮不响应点击, hidePicker:不被调用。

When I click on closeDateTextField the keyboard appears with a Done button in toolbar but the button does not respond to click, the hidePicker: does not get called.

- (void)hidePicker:(id)sender {
    [self.closeDateTextField resignFirstResponder];
}

任何想法我做错了什么?

Any idea what I'm doing wrong?

推荐答案

我只是试过下面的代码,它的工作很好。测试在iOS 6& 7模拟器。

I just tried the following code and it worked just fine. Tested on both iOS 6 & 7 simulator.

@interface HSViewController

@property (weak, nonatomic) IBOutlet UITextField *closeDateTextField;
@property (strong, nonatomic) UIToolbar * datePickerToolbar;

@end

@implementation HSViewController

- (void)viewDidLoad
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
    [super viewDidLoad];

    self.datePickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    UIBarButtonItem * doneBtn =
    [[UIBarButtonItem alloc]
     initWithBarButtonSystemItem:UIBarButtonSystemItemDone
     target:self
     action:@selector(hidePicker:)];
    [self.datePickerToolbar setItems:@[doneBtn] animated:NO];

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 320, 120)];
    textField.backgroundColor = [UIColor greenColor];
    [self.view addSubview:textField];
    self.closeDateTextField = textField;
    self.closeDateTextField.inputAccessoryView = self.datePickerToolbar;
}

- (void)hidePicker:(id)sender {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    [self.closeDateTextField resignFirstResponder];
}

@end

这篇关于为什么UIBarButtonItem在UIToolbar中没有获得点击设置为UITextField的inputAccessoryView?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆