làm thế nào để thêm một hành động trên khóa trả về UITextField?


91

Tôi có một nút và trường văn bản trong chế độ xem của tôi. khi tôi nhấp vào trường văn bản, một bàn phím xuất hiện và tôi có thể viết trên trường văn bản và tôi cũng có thể loại bỏ bàn phím bằng cách nhấp vào nút bằng cách thêm:

[self.inputText resignFirstResponder];

Bây giờ tôi muốn bật phím quay lại của bàn phím. khi tôi nhấn vào bàn phím bàn phím sẽ biến mất và điều gì đó sẽ xảy ra. Tôi có thể làm cái này như thế nào?


Câu trả lời:


186

Đảm bảo "bản thân" đăng ký UITextFieldDelegatevà khởi chạy inputText bằng:

self.inputText.delegate = self;

Thêm phương thức sau vào "self":

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

Hoặc trong Swift:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}

11

Với kiểu mở rộng trong nhanh chóng 3.0

Đầu tiên, hãy thiết lập ủy quyền cho trường văn bản của bạn.

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputText.delegate = self
}

Sau đó, tuân theo UITextFieldDelegatetrong phần mở rộng của trình điều khiển chế độ xem của bạn

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}

4

Mặc dù các câu trả lời khác hoạt động chính xác, tôi thích làm như sau:

Trong viewDidLoad (), thêm

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

và xác định chức năng

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}

-1

Sử dụng cơ chế Target-Action UIKit cho UIEvent "primaryActionTriggered" được gửi từ UITextField khi nhấn vào nút hoàn tất trên bàn phím.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.