2016-07-19 24 views
0

當我開始在textField中寫入任何內容時,搜索按鈕顯示在標題中。當我在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

我覺得你最好的選擇,它的實施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名稱(這是命名約定)。由大寫開頭的名稱保留給類。

+0

我可能會建議'textFieldDidBeginEditing'和'textFieldDidEndEditing'代替。 – caseynolan

+0

當UITextField成爲第一個響應者(獲得焦點)並停止時,調用'textFieldBeginEditing'和'textFiledDidEndEditing',而不是在實際輸入時調用。所以,讓我們@穆罕默德雷漢選擇適合他的任何更好 – crisisGriega

+0

你是完全正確的,我的錯誤。我應該先嚐試理解這個問題! :) – caseynolan

0

使用此代碼,它肯定會工作,

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

否則保持隱藏按鈕,只要你想

self.navigationButtonOutlet.hidden=YES; 
相關問題