Please Enable JavaScript!
Gon[ Enable JavaScript ]

iPhone 개발시 text 박스 입력할 때 키패드 사용후 감추기

안드로이드 개발
반응형

iPhone 개발시 text 박스 입력할 때 키패드 사용후 감추기

 

개발환경 : Mac OS X 10.6.3, Simulator - 3.1.3

 

데이터 입력시 text 박스를 사용하게 된다. 아이폰에서는 키보드 대용으로 화면상에

키패드가 올라오게 되는데 글자 입력을 편리하게 하기 위함이다. 그런데 사용하다

보면 뭔가 어색한 면을 발견할수 있을 것이다. 뭐냐하면 텍스트 박스에 입력을 하고

나서 아래쪽에 있는 버튼을 클릭하고 싶은데 떠 있던 키패드가 사라지지 않는

것이다. 버튼이 키패드 아래에 숨겨져 있어서 난감한 상황이 연출되는 것이다.

물론 다른곳에 포커스가 가게 되면 사라지지만 입력이 끝나고 바로 키패드에

가려진 버튼을 사용해야 한다면 이런 방법을 사용해야 할것이다.

아래의 내용은 이런 키패드를 사라지게 하고 싶을 때 구현하는 코드이다.

키패드의 제어는 First Response 에서 하게 된다. 가상 인스턴스인 이곳은

인터페이스 빌드 화면에서도 File’s Owner 옆에 붙어 있는 것을 볼수 있다.

First Response 은 가상의 인스턴스로서 모든 이벤트를 다 받아서 처리하는

곳이다.

키패드를 제어하기 위해서는 First Response 로 정해진 키패드 이벤트를

날려주면 된다. 이를 위해서 UIKit 는 키패드 이벤트로 UITextFieldDelegate 라는

프로토콜과 델리게이터를 제공한다.

구현은 텍스트 입력을 위해 키패드가 뜨게 되면 아래부분에 return 이라는

버튼이 있다. 이것을 눌렀을 때 키패드가 사라지게 구현할 것이다.

우선 키패드를 구현하기 위해 헤더클래스(*.h)UITextFieldDelegate 구현한다.

@interface FirstXib : UIViewController<UITextFieldDelegate> {

           NSString *receiveData;

           IBOutlet UITextField *txtRecevie;

}

 

다음은 화면이 로딩한후에 UITextField  인스턴스마다 UITextFieldDelegate 프로토콜을

구현한 델리게이트가 누구인지 알려준다.

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad {

           txtRecevie.delegate = self;

           txtRecevie.text = receiveData;

           [self readFromDatabase:receiveData]; // DB 호출

    [super viewDidLoad];

}

 

다음은 키패드 버튼인 return 을 눌렀을 때 실행될 함수 resignFirstResponder 를 구현

하면된다. 여기에 First Responser에 참조를 포기하도록 하는 소스를 구현할 것이다.

- (BOOL)textFieldShouldReturn:(UITextField*)theTextField{

           [theTextField resignFirstResponder];

           return YES;

}

 

제대로 동작하는지 확인해 본다.


반응형
Posted by 녹두장군1
,