2012-06-09 41 views

Trả lời

150

Thực hiện các phương pháp đại biểu

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.yourIBtextField.delegate = self; 
} 

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

Phần mà tôi đã mất tích được thêm để giao diện trong file * .h. Khi tôi thêm vào đó, mã này hoạt động mà không có vấn đề gì. Hy vọng rằng sẽ giúp người khác ra! – proudgeekdad

+7

Trong trường hợp này là bắt buộc. – brooNo

+3

Bạn cũng có thể kết nối đại biểu từ bảng phân cảnh (xib), nếu bạn kéo kết nối từ textField đến biểu diễn viewController. Bằng cách đó bạn không phải viết dòng từ phương thức viewDidLoad. – Luka

9

UITextView không có bất kỳ phương pháp mà sẽ được gọi khi người dùng chạm vào phím Enter.

Thậm chí sau đó nếu bạn muốn thực hiện việc này, hãy triển khai textView: shouldChangeTextInRange: replacementText: phương thức UITextViewDelegate và trong kiểm tra đó nếu văn bản thay thế là \ n, hãy ẩn bàn phím.

Có thể có những cách khác nhưng tôi không biết bất kỳ điều gì.

Đảm bảo bạn tuyên bố hỗ trợ cho giao thức UITextViewDelegate.

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

    if([text isEqualToString:@"\n"]) { 
     [textView resignFirstResponder]; 
     return NO; 
    } 
    return YES; 
} 

Tôi hy vọng nó sẽ giúp ích rất nhiều.

+0

Cài đặt này sẽ đặt lại cài đặt ẩn của tôi vì một số lý do. Bất kỳ ý tưởng tại sao? – John

+0

bạn có thể vui lòng cung cấp thêm chi tiết, như loại cài đặt ẩn nào không ?? –

1

Make loại trên UIViewController với phương pháp tiếp theo

- (void)hideKeyboard 
{ 
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) 
               to:nil 
              from:nil 
             forEvent:nil]; 
} 
Các vấn đề liên quan