当我开始在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;
}
}
答案 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;