2011-06-20 25 views
12

Tôi đã tìm kiếm trên web trong khoảng một giờ và không thể tìm thấy bất kỳ mã nào để giúp tôi thực hiện việc này.UITextView từ chối phản hồi đầu tiên về 'Xong'

Tôi có một số UITextView mà tôi cần phải từ chức phản hồi đầu tiên khi người dùng nhấn nút 'Xong' trên bàn phím của họ.

Tôi đã nhìn thấy mã trôi nổi trên internet như thế này:

-(BOOL) textFieldShouldReturn:(UITextField *)textField { 
[textField resignFirstResponder]; 
return NO; 
} 

Nhưng điều đó sẽ không làm việc cho một UITextView. Đơn giản chỉ cần đặt, Làm cách nào để biết thời điểm người dùng nhấn nút xong trên bàn phím?

Trả lời

44

Thực hiện phương thức ủy quyền shouldChangeTextInRange:.

Sử dụng phương pháp tiếp cận bên dưới và giải pháp chỉ hoạt động với @ "\ n" (ký tự dòng mới).

//In you *.h file make sure you add 
@interface v1ViewController : UIViewController <UITextViewDelegate> 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    myTextField.delegate = self; 
} 

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
      replacementText:(NSString *)text 
     { 

      if ([text isEqualToString:@"\n"]) { 

       [textView resignFirstResponder]; 
       // Return FALSE so that the final '\n' character doesn't get added 
       return NO; 
      } 
      // For any other character return TRUE so that the text gets added to the view 
      return YES; 
    } 
+0

Tôi đã thiết lập. làm thế nào tôi có thể phát hiện khi được nhấn. –

+0

đặt ủy nhiệm trường văn bản như 'myTextField.delegate = self;' và trả về 'YES' trong phương thức' textFieldShouldReturn'; – Jhaliya

+2

@Jhaliya xin vui lòng đọc OP, nó là một văn bản VIEW không phải là một văn bản FIELD –

-3

Bạn có thể sử dụng phương pháp đại biểu

- (void)textViewDidEndEditing:(UITextView *)textView { 
    [textView resignFirstResponder]; 
} 

Bạn phải thiết lập điều khiển của bạn như các đại biểu cho TextView. Để biết thêm các phương pháp, bạn có thể xem tại đây: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html%23//apple_ref/doc/uid/TP40006897

+0

Đã không làm việc, Không có gì khác xảy ra trong ứng dụng của tôi. Tôi đã thiết lập đại biểu của mình và tôi đã thiết lập bàn phím theo cách mình muốn, nhưng mã đó không bao giờ được gọi. –

+2

'textViewDidEndEditing:' được gọi khi phiên bản kết thúc, nói cách khác khi textView đã từ chối trả lời đầu tiên, vì vậy '[textView resignFirstResponder];' bên trong nó sẽ không có hiệu lực. – nacho4d

+0

Bạn nói đúng. Tôi nên đọc lại tài liệu – Pierre

Các vấn đề liên quan