如何在目标c中禁用以编程方式创建的UIBarButtonItem?

时间:2016-10-17 05:19:14

标签: ios objective-c toolbar uibarbuttonitem

我以编程方式创建工具栏,并在工具栏中以编程方式添加四个UIBarButtonItem。
如果文本视图开始编辑,如果textview清除按钮和翻译按钮中没有文本将禁用,则此按钮将出现。
这是我的四个按钮创建代码。

UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.backgroundColor = [UIColor lightGrayColor];

numberToolbar.items = [NSArray arrayWithObjects:
                       [[UIBarButtonItem alloc]initWithTitle:@"Hide" style:UIBarButtonItemStyleDone target:self action:@selector(cancelKeyboard)],
                       [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleDone target:self action:@selector(clearTextView)],
                       [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Paste" style:UIBarButtonItemStyleDone target:self action:@selector(paste)],
                       [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                       [[UIBarButtonItem alloc]initWithTitle:@"Translate" style:UIBarButtonItemStyleDone target:self action:@selector(translate)],
                       nil];
[numberToolbar sizeToFit];
_sorceTextview.inputAccessoryView = numberToolbar;
_sorceTextview.autocorrectionType = UITextAutocorrectionTypeNo;

现在如何禁用清除和翻译按钮:

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView {} 

方法?请帮助。

1 个答案:

答案 0 :(得分:2)

为这些按钮使用实例变量。然后,您可以根据需要设置enabled属性。

@implementation MyViewController {
    UIBarButtonItem *_btnClear;
    UIBarButtonItem *_btnTranslate;
}

然后在工具栏设置代码中:

_btnClear = [[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleDone target:self action:@selector(clearTextView)];
_btnTranslate = [[UIBarButtonItem alloc]initWithTitle:@"Translate" style:UIBarButtonItemStyleDone target:self action:@selector(translate)];
UIBarButtonItem *flex = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

numberToolbar.items = @[
                       [[UIBarButtonItem alloc]initWithTitle:@"Hide" style:UIBarButtonItemStyleDone target:self action:@selector(cancelKeyboard)],
                       flex,
                       _btnClear,
                       flex,
                       [[UIBarButtonItem alloc]initWithTitle:@"Paste" style:UIBarButtonItemStyleDone target:self action:@selector(paste)],
                       flex,
                       _btnTranslate
                       ];

然后,只要您需要禁用,您就可以执行以下操作:

_btnClear.enabled = NO;

并启用:

_btnClear.enabled = YES;