[ios] UITextField 반환 키에 작업을 추가하는 방법은 무엇입니까?

내보기에 버튼과 텍스트 텍스트 필드가 있습니다. 텍스트 필드를 클릭하면 키보드가 나타나고 텍스트 필드에 쓸 수 있으며 다음을 추가하여 버튼을 클릭하여 키보드를 닫을 수도 있습니다.

[self.inputText resignFirstResponder];

이제 키보드의 리턴 키를 활성화하고 싶습니다. 키보드를 누르면 키보드가 사라지고 뭔가가 발생합니다. 어떻게 할 수 있습니까?



답변

“self”가 다음을 사용 UITextFieldDelegate하여 inputText를 구독 하고 초기화 하는지 확인합니다 .

self.inputText.delegate = self;

“self”에 다음 메소드를 추가하십시오.

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

또는 Swift에서 :

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


답변

신속한 3.0의 확장 스타일

먼저 텍스트 필드에 대한 대리인을 설정합니다.

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

그런 다음 UITextFieldDelegate뷰 컨트롤러의 확장을 준수 하십시오.

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


답변

다른 답변은 올바르게 작동하지만 다음을 선호합니다.

viewDidLoad ()에서

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

기능을 정의

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


답변

키보드 완료 버튼을 탭할 때 UITextField에서 전송 된 “primaryActionTriggered”UIEvent에 대해 Target-Action UIKit 메커니즘을 사용합니다.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)


답변