2010-08-26 52 views
120

Nhấp vào trường văn bản sẽ làm cho bàn phím xuất hiện. Làm cách nào để ẩn khi người dùng nhấn phím trả về?Làm thế nào để ẩn bàn phím khi tôi bấm phím return trong một UITextField?

+12

Điều tốt đẹp về Stack Overflow là nhiều câu hỏi đã được trả lời, đặc biệt là những câu hỏi đơn giản. Vì vậy, hãy tìm câu trả lời FIRST, trước khi yêu cầu. Hãy xem, nó đơn giản: http://stackoverflow.com/search?q=iphone+hide+keyboard – Felixyz

+0

Đây là lớp con của UITextfield tự động thay đổi UIReturnKey theo điều kiện văn bản/chuỗi: https://github.com/ codeinteractiveapps/OBReturnKeyTextField – CodeInteractive

Trả lời

246

Trước tiên hãy đại biểu tập tin của bạn cho UITextField và sau đó thêm phương pháp này để mã của bạn ..

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 
    return YES; 
} 
+1

Tò mò, tại sao không cần thiết? Thông thường bạn sẽ thấy cảnh báo trong trường hợp này. – pixelfreak

+7

nếu bạn làm cho tệp của bạn ủy nhiệm bằng cách sử dụng Interface Builder thì không cần thiết trong tệp .h .. – Saurabh

+1

thêm vào tệp .h và đặt đại biểu trong viewdidload [yourTextField setDelegate: self]; sẽ hoàn thành nó! – Umitk

1

bộ đại biểu của UITextField, và hơn đi xe, textFieldShouldReturn phương pháp, trong phương pháp mà chỉ cần viết ra hai đường thẳng:

[textField resignFirstResponder]; 
return YES; 

đó là nó. Trước khi viết mã, hãy quên đặt đại biểu của một số UITextField và đặt Loại khóa trả về thành "Xong" từ cửa sổ thuộc tính. (Lệnh + shift + I).

57

Trong viewDidLoad khai báo:

[yourTextField setDelegate:self];

Sau đó, bao gồm ghi đè của phương pháp đại biểu :

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

+1 cho lời nhắc 'setDelegate:'. Chắc chắn đã quên và mã không hoạt động trước đó. – piperchester

+2

Đây có phải là textField, chứ không phải là yourTextField khi nó đang được chuyển vào không? –

+0

là một cách để tuyên bố rằng đại biểu của textField của bạn –

1

Hãy thử điều này ,

[textField setDelegate: self]; 

Sau đó, trong phương pháp đại biểu TextField

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

đó không phải là cách thực hành tốt nhất để làm điều đó. – orafaelreis

+0

cần UITextFieldDelegate trong định nghĩa giao diện. –

+0

@AlpAltunel: Cảm ơn bạn đã bình luận, Đã 4 năm trở lại đây. –

11

Trong nhanh chóng làm như thế này:
đầu tiên trong ViewController bạn thực hiện điều này UITextFieldDelegate Đối với ví dụ.

class MyViewController: UIViewController, UITextFieldDelegate { 
.... 
} 

Bây giờ thêm một đại biểu cho một TextField mà bạn muốn bỏ bàn phím khi trở lại được khai thác hoặc trong phương pháp viewDidLoad như dưới đây hoặc nơi bạn đang khởi tạo nó. Ví dụ:

override func viewDidLoad() { 

    super.viewDidLoad() 
    myTextField.delegate = self 
} 

Bây giờ, hãy thêm phương pháp này.

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 
    return true 
} 
+1

Bước thứ hai không cần thiết nếu bạn thiết lập đại biểu trong IB. –

8

Hãy thử điều này trong Swift,

Bước 1: Set delegate như tự để textField

textField.delegate = self 

của bạn Bước 2: Thêm UITextFieldDelegate dưới đây khai lớp học của bạn,

extension YourClassName: UITextFieldDelegate { 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
0
[textField resignFirstResponder]; 

Sử dụng này

1

Bạn có thể kết nối "Hành động Tiểu học gây" (nhấp chuột phải vào UITextField) với một IBAction và bạn có thể từ chức responder đầu tiên (không có uỷ).Ví dụ (Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) { 
    sender.resignFirstResponder() 
    ... 
} 
+0

Cách ưu tiên nếu sử dụng bảng phân cảnh. – lal

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