텍스트 필드를 클릭하면 키보드가 나타납니다. 사용자가 Return 키를 누를 때 숨기려면 어떻게합니까?
텍스트 필드를 클릭하면 키보드가 나타납니다. 사용자가 Return 키를 누를 때 숨기려면 어떻게합니까?
답변:
먼저 UITextField의 파일 대리자를 만듭니다.
@interface MYLoginViewController () <UITextFieldDelegate>
@end
그런 다음이 메소드를 코드에 추가하십시오.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
또한 추가 self.textField.delegate = self;
에서 viewDidLoad
선언 :
[yourTextField setDelegate:self];
그런 다음 delegate 메소드의 대체를 포함하십시오.
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
알림 +1 확실히 잊어 버렸고 코드는 이전에 작동하지 않았습니다.
스위프트 에서 이것을 시도하십시오 .
1 단계 : 대리인을 자신에게 위임textField
textField.delegate = self
2 단계 : 이 UITextFieldDelegate를 클래스 선언 아래에 추가하십시오.
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
신속하게 다음과 같이하십시오 :
먼저 ViewController
구현 에서 UITextFieldDelegate
예를 들어.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
이제 아래와 같은 방법이나 초기화하는 위치 TextField
에서 리턴을 누를 때 키보드를 닫을 대리자를 추가 viewDidLoad
하십시오. 예를 들어.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
이제이 방법을 추가하십시오.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
이 시도,
[textField setDelegate: self];
그런 다음 textField delegate 메소드에서
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
UITextField
뷰 컨트롤러의 위임을 설정 field.delegate = self
한 후 다음을 수행하십시오.
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
좋아, 초보자에게는 약간 혼란 스러울 수 있다고 생각합니다. 나는 정답이 적어도 Swift4에서 위의 모든 것의 혼합이라고 생각합니다.
확장을 만들거나 이것을 사용하고 싶지만 UITextFieldDelegate를 구현 해야하는 ViewController를 사용하십시오. 재사용 성을 위해 확장 프로그램을 사용하는 것이 더 쉽다는 것을 알았습니다.
extension UIViewController : UITextFieldDelegate {
...
}
그러나 대안도 잘 작동합니다.
class MyViewController: UIViewController {
...
}
textFieldShouldReturn 메소드를 추가하십시오 (확장자 또는 ViewController에서 이전 옵션에 따라 다름)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
viewDidLoad 메소드에서 텍스트 필드의 델리게이트를 self로 설정하십시오.
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
그게 다야. 지금, 당신은 누를 때 호출해야합니다.return
textFieldShouldReturn
이 클래스를 정의한 다음 클래스를 사용하도록 텍스트 필드를 설정하면 리턴 키가 자동으로 눌러 질 때 전체 숨기기 키보드를 자동화합니다.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
그런 다음 스토리 보드에서 할 일은 클래스를 사용할 필드를 설정하는 것입니다.