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; } |
제대로 동작하는지 확인해 본다.
'안드로이드 개발' 카테고리의 다른 글
아이폰(iPhone) 탭바 구현 - (2) 탭 추가 (1) | 2010.08.01 |
---|---|
아이폰(iPhone) 탭바 구현 - (3) 탭(tabBar)에 아이콘과 색깔 넣기 (1) | 2010.08.01 |
iPhone (아이폰) 개발시 DB를 위한 Sqlite3 다루기 (1) (1) | 2010.08.01 |
iPhone (아이폰) 개발시 DB를 위한 Sqlite3 다루기 (2) (7) | 2010.08.01 |
iPhone(아이폰) DB 개발시 Sqlite3 용 클래스 FMDB (3) | 2010.07.31 |
Android 에뮬레이터에 apk 파일 설치 (0) | 2010.07.31 |
안드로이드(Android) 단말기에서 ConnectivityManager 를 통해 실시간 네트웍 상태 파악하기 (29) | 2010.07.31 |
안드로이드(android)에서 java 의 HttpClient 4.0 클래스를 이용한 네트웍 프로그램 구현 (4) | 2010.07.30 |