본문 바로가기

프로그래밍/iOS

[iOS]키보드 입력창 내리기, 텍스트 입력창 닫기

텍스트필드 작업을 하면 입력창 때문에

 

버튼이 가려서 불편한 경우가 많다.

 

이 때 입력창의 Enter 혹은 return 등을 누르면 창 닫히는 기능을 추가하면 편하다.

 

스토리 보드 상에서 텍스트 필드를 ctrl+클릭

뜨는 메뉴 중 DidEndOnExit를 ViewController로 끌어옴

함수이름을 입력하고 생성된 함 수 바디에

 

[sender resignFirstResponder]; 입력


 

키보드창 없애는 것만으로 부족하여 

키보드 창이 생길 때 화면을 위로 올리고

키보드 창을 내릴 때 화면을 다시 내려주는 코드도 추가

 

- (IBAction)Return:(id)sender //위 스샷의 링크 함수

{

    [sender resignFirstResponder];//키보드 없애기

    //화면 내리기

    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];

    CGRect rect=self.view.frame;

    rect.origin.y+=100;

    rect.size.height-=100;

    self.view.frame=rect;

    [UIView commitAnimations];

}

//아래부터는 직접 입력

-(void)keyboardWillShow:(NSNotification *)notif

{

    //화면 올리기

    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];

    CGRect rect=self.view.frame;

    rect.origin.y-=100;

    rect.size.height+=100;

    self.view.frame=rect;

    [UIView commitAnimations];

}

//키보드화면이 뜨는걸 확인

-(void)viewWillAppear:(BOOL)animated

{

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window];//화면이 뜨면 keyboardWillShow로 전달

}

//키보드 화면이 사라지는 걸 확인

-(void)viewWillDisappear:(BOOL)animated

{

    [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillShowNotification object:nil];

 

}