2016-08-02 82 views
2

我想在用戶完成輸入後搜索一些單詞, 我試過這個選擇器,但它在每個輸入處被調用改變了。在iOS上如何判斷一個文本字段的完整輸入

#pragma mark textFieldValueChanged 
- (void)inputSearchTextChanged:(UITextField *)textField 
{ 
    if (textField.text.length == 0) { 
     self.searchView.tipsView.hidden = NO; 
    } else { 
     self.searchView.tipsView.hidden = YES; 
    } 
    if (self.searchView.lySelectView.selectState == LYTabSelectOptionLeft) { 
     [self searchTagWithTagTitle:textField.text]; 
    } else { 
     [self searchPeopleWithTagTitle:textField.text]; 
    } 
} 
+1

你想'textFieldDidEndEditing'嗎? – kai

+0

我沒有明確表達,我不想要textfield末尾編輯,就像:你想輸入@「hotdog」,首先你快速輸入「hot」,過了一會兒,你繼續輸入「dog」 。我想得到你輸入「熱」的事件。我怎麼能? –

回答

0

可以使用UITextFieldDelegate協議。更多詳細信息here。您必須在您的ViewController中實現方法- (void)textFieldDidEndEditing:(UITextFiled)textfield)*。

-(void) textFieldDidEndEditing:(UITextFiled*)textfield) 
{ 
    if (textField.text.length == 0) { 
     self.searchView.tipsView.hidden = NO; 
    } else { 
     self.searchView.tipsView.hidden = YES; 

    if (self.searchView.lySelectView.selectState == LYTabSelectOptionLeft) { 
     [self searchTagWithTagTitle:textField.text]; 
    } else { 
     [self searchPeopleWithTagTitle:textField.text]; 
    } 
} 

Asssign您的視圖控制器爲委託:

self.textField.delegate = self; //self is the ViewController. 

後來編輯澄清後:

你要當用戶停止鍵入一個事件:你可以用一個模擬這個事件計時器。

@property (strong, nonatomic) NSTimer *timer; 

.... 

- (BOOL)textField:(UITextField *)textField 
shouldChangeCharactersInRange:(NSRange)range 
replacementString:(NSString *)strin { 
    if (self.timer != nil) { 
     [self.timer invalidate]; 
     self.timer = nil; 
    } 

    self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(eventNeeded) userInfo:nil repeats:NO]; 
    NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; 
    [runLoop addTimer:self.timer forMode:NSDefaultRunLoopMode]; 

    return YES; 
} 

-(void) eventNeeded{ 
    NSLog(@"User has stopped typing."); 
} 
+0

我沒有表達清楚,我不想要textfield末尾編輯,就像:你想輸入@「hotdog」,首先,你快速輸入「hot」,過了一會兒,你繼續輸入「dog」 。 –

+0

我想要得到你輸入「hot」的事件。我怎麼能? –

+0

您可以在inputSearchTextChanged中啓動NSTimer,並在每次寫入字符時使計時器無效。如果計時器到期,你將會有你的事件。 – vladiulianbogdan

1

嘗試

-(void) textFieldDidEndEditing:(UITextFiled*)textfield) { 

} 
0
set delegate of textfield and try below delegate method 


-(void) textFieldDidEndEditing:(UITextFiled*)textfield) 
    { 
     if (textField.text.length == 0) { 
      self.searchView.tipsView.hidden = NO; 
     } else { 
      self.searchView.tipsView.hidden = YES; 

     if (self.searchView.lySelectView.selectState == LYTabSelectOptionLeft) { 
      [self searchTagWithTagTitle:textField.text]; 
     } else { 
      [self searchPeopleWithTagTitle:textField.text]; 
     } 
    } 
+0

我沒有清楚表達,我不想要textfield末尾編輯,就像:你想輸入@「hotdog」,首先你快速輸入「hot」,過了一會兒,你繼續輸入「dog」 。 \t 我想得到你輸入「hot」的事件。我怎麼能? –