내보기에 버튼과 텍스트 텍스트 필드가 있습니다. 텍스트 필드를 클릭하면 키보드가 나타나고 텍스트 필드에 쓸 수 있으며 다음을 추가하여 버튼을 클릭하여 키보드를 닫을 수도 있습니다.
[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)