[ios] Return 키를 누를 때 프로그래밍 방식으로 키보드 iOS를 닫는 방법

나는 viewController의 속성을 UITextField프로그래밍 방식으로 만들었습니다 UITextField. 화면에 리턴과 터치로 키보드를 닫아야합니다. 화면 터치를 해제 할 수 있었지만 Return 키를 누르면 작동하지 않습니다.

스토리 보드를 사용하고 UITextField객체를 속성으로 생성하지 않고 직접 할당 및 초기화하는 방법을 보았습니다 . 할 수 있습니까?

.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>

@property (strong, atomic) UITextField *username;

@end

.미디엄

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    self.view.backgroundColor = [UIColor blueColor];
    self.username = [[UITextField alloc] initWithFrame:CGRectMake(100, 25, 80, 20)];
    self.username.placeholder = @"Enter your username";
    self.username.backgroundColor = [UIColor whiteColor];
    self.username.borderStyle = UITextBorderStyleRoundedRect;
    if (self.username.placeholder != nil) {
        self.username.clearsOnBeginEditing = NO;
    }
    _username.delegate = self;

    [self.view addSubview:self.username];
    [_username resignFirstResponder];

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"touchesBegan:withEvent:");
    [self.view endEditing:YES];
    [super touchesBegan:touches withEvent:event];
}

@end



답변

간단한 방법은 대리자 UITextField를 self ( self.mytestField.delegate = self) 에 연결하고 다음을 textFieldShouldReturn사용 하는 방법에서 키보드를 닫는 것입니다.[textField resignFirstResponder];

키보드를 닫는 또 다른 방법은 다음과 같습니다.

[self.view endEditing:YES];

넣어 [self.view endEditing:YES];키보드 (버튼 이벤트, 터치 이벤트 등)를 해고하고자하는 경우.


답변

다음 UITextField과 같은 대리자 메서드를 추가합니다 .

@interface MyController : UIViewController <UITextFieldDelegate>

그리고 textField.delegate = self;다음 두 대리자 메서드를 추가하십시오.UITextField

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return YES;
}

// It is important for you to hide the keyboard
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}


답변

//보기에서 배경을 터치하여 키보드 숨기기

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [[self view] endEditing:YES];
}


답변

키보드를 닫으려면 간단히 이것을 사용하십시오.

UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)

스위프트 3

UIApplication.shared.sendAction(#selector(UIResponder.resign‌​FirstResponder), to: nil, from: nil, for: nil)


답변

SWIFT 4 :

self.view.endEditing(true)

또는

텍스트 필드의 델리게이트를 현재 뷰 컨트롤러로 설정 한 다음 :

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    textField.resignFirstResponder()

    return true

}

목표 -C :

[self.view endEditing:YES];

또는

텍스트 필드의 델리게이트를 현재 뷰 컨트롤러로 설정 한 다음 :

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

    return YES;
}


답변

App Delegate에서 다음과 같이 작성할 수 있습니다.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.window endEditing:YES];
}

이 방법을 사용하면 너무 많은 코드를 작성할 수 없습니다.


답변

iOS 뷰 계층 구조에서 첫 번째 응답자가 무엇인지에 대한 아이디어를 얻으십시오. 텍스트 필드 내부를 터치 (또는 becomeFirstResponder프로그래밍 방식으로 메시지 전달) 할 때 텍스트 필드가 활성화 (또는 첫 번째 응답자)되면 키보드가 표시됩니다. 따라서 첫 번째 응답자에서 텍스트 필드를 제거하려면 메시지 resignFirstResponder를 거기에 전달해야합니다 .

[textField resignFirstResponder];

리턴 버튼에서 키보드를 숨기려면 델리게이트 메서드를 구현하고 메시지를 textFieldShouldReturn:전달해야 resignFirstResponder합니다.

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