2012-07-23 26 views
26

Tôi chỉ hỏi a question về làm thế nào để theo dõi thay đổi cho một UITextField và nhận được phản ứng này:Biết chuỗi thay đổi hoàn toàn trong TextField: shouldChangeCharactersInRange: replacementString:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr { 
    // Enable "Next" if you like what's entered in the replacementStr 
} 

này hoạt động, nhưng các chuỗi thay thế không phải là toàn bộ chuỗi, chỉ là những gì nó được thêm vào. Làm thế nào tôi có thể nhận được toàn bộ chuỗi? Mục tiêu của tôi là xem chuỗi trong trường văn bản có trống hay bằng một số nhất định (trong các trường hợp khác nhau).

Xin lưu ý rằng lối thoát cho trường văn bản không hoạt động trong trường hợp này, bởi vì phương pháp này đang được gọi trước khi văn bản trong trường thay đổi.

+0

textField.text là toàn bộ chuỗi. Ít nhất đó là toàn bộ chuỗi cũ. –

Trả lời

65
NSString * proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:replacementString]; 
+1

Còn nếu họ sử dụng backspace thì sao? Điều này vẫn sẽ làm việc? Nó không hoạt động khi tôi cố gắng thêm. Nếu họ backspace, không có chuỗi thay thế, nhưng chuỗi textField sẽ là một ít hơn. Điều này có thể trình bày một vấn đề nếu tôi kiểm tra một số khác không, và textField là, nói, 5, và sau đó họ backspace. –

+3

Có, nó hoạt động cho các không gian. –

0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

// [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]]; 
    NSLog(@"%@",searchStr); 
    return YES; 
} 
9

Swift Version

Trong Swift Chúng tôi cần phải cast textField's văn bản để NSString. Sau đây có thể hữu ích:

let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

Swift 4

let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string) 
Các vấn đề liên quan