UITextField-리턴 버튼 이벤트 캡처


답변:


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

스토리 보드에서 델리게이트를 설정하는 것을 잊지 마십시오 ...

여기에 이미지 설명 입력


47
뷰 컨트롤러가 텍스트 필드의 델리게이트로 설정되어 있는지 확인하십시오.
zekel

1
감사합니다. 나를 위해을 통해 대리인을 설정했습니다 self.yourTextField.delegate = self;. 여러 텍스트 필드도 작동합니다.
haxpor 2015 년

@Praxiteles 이제 위임없이 스토리 보드에서이 작업을 수행 할 수 있습니다. 아래 답변을 확인하세요.
Blake Lockley

51

위임이 필요하지 않습니다. 여기에 한 줄짜리가 있습니다.

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

슬프게도 스토리 보드에서 직접이 작업을 수행 할 수는 없지만 (스토리 보드에서 해당 작업을 내보내는 컨트롤에 작업을 연결할 수 없음) 중개 작업을 통해 수행 할 수 있습니다.


1
대리자 메서드가 YES를 반환하는 UIControlEventEditingDidEndOnExit경우에만 이벤트가 전송 된다는 점을 지적하고 싶습니다 textFieldShouldReturn:(텍스트 필드를 사임하지 않고).
alex-i

당신은하지 않습니다 위임을 구현합니다. 하지만 만약 당신 YES이이 방법 으로 돌아와야 할 수도 있습니다 .
mxcl

9

SWIFT 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

enterPressed () 함수에서 원하는 모든 동작을 넣으십시오.

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

이제 전송 된 이벤트 'Did End On Exit'를 사용하여 스토리 보드를 만들 수 있습니다.

뷰 컨트롤러 하위 클래스에서 :

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

원하는 텍스트 필드의 스토리 보드에서 :

여기에 이미지 설명 입력


이것은 이제 정답입니다.
Psiloc

3

UITextFieldDelegate를 사용하는 Swift 버전 :

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}

2

스위프트 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

엔터 버튼을 클릭하면이 델리게이트 메서드가 호출되며이 델리게이트 메서드에서 리턴 버튼을 캡처 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.