当我在textField中打字时,我想在导航栏上显示按钮

时间:2016-07-19 08:08:23

标签: ios objective-c iphone ios7 uinavigationbar

当我开始在textField中写任何内容时,搜索按钮会显示在标题中。

-(IBAction)actionCloseKeyboard:(id)sender {

    [UIView animateWithDuration:0.5 
                      delay:0 
                    options:UIViewAnimationCurveEaseOut
                 animations:^{                      

                     [self adjustLayout:[[UIApplication sharedApplication] statusBarOrientation]];
                 } completion:^(BOOL finished) {

                     [countrySelector resignFirstResponder];
                     [searchKeyText resignFirstResponder];
                 }];
//Cancel btn finish
UIButton  *CancelBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[CancelBtn setTitle:CustomLocalizedString(@"CANCEL") forState:UIControlStateNormal];
[CancelBtn addTarget:self action:@selector(actionCloseKeyboard:) forControlEvents:UIControlEventTouchUpInside];
CancelBtn.frame = CGRectMake(0, 0, 80, 30);
CancelBtn.hidden = YES;
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:CancelBtn];

//Search Btn

当我开始在文本字段中写任何内容时,这是我想要在导航栏上显示的搜索按钮。

UIButton *SearchBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[SearchBtn setTitle:CustomLocalizedString(@"FIND CVS") forState:UIControlStateNormal];
[SearchBtn addTarget:self action:@selector(actionFindJobs:) forControlEvents:UIControlEventTouchUpInside];
SearchBtn.frame = CGRectMake(0, 0, 80, 30);
SearchBtn.hidden = YES;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:SearchBtn];

//Condition Hide and Show

if(CancelBtn == true)
{
    CancelBtn.hidden = NO;
    SearchBtn.hidden = NO;
}
}

2 个答案:

答案 0 :(得分:0)

我认为您最好的选择是实施UITextFieldDelegate并在shouldChangeCharactersInRange:方法中检查最终的字符数。因此,如果它大于0则显示按钮,否则隐藏它。

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSUInteger finalLenght = textField.text.length - range.length + string.length;
    searchButton.hidden = (finalLenght == 0);

    return YES;
}

同样快速评论,不要使用大写字母用于var名称(这是命名约定)。以大写字母开头的名字是为班级保留的。

答案 1 :(得分:0)

使用此代码肯定会有效,

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
      self.navigationButtonOutlet.hidden=NO;
        return YES;
    }

否则按钮隐藏按钮

  self.navigationButtonOutlet.hidden=YES;