2011-12-27 5 views
0

나는 암호 위에 사용자 이름을 입력 한 다음 로그인 단추를 마지막에 맨 아래에 둔 로그인 페이지를 가지고 있습니다. 사용자 이름을 입력하면 키보드가 패스와 로그인 정보를 포함합니다. 누군가가 텍스트 필드 외부를 클릭하거나 키보드 닫기 버튼을 생성하는 방법이있을 때 키보드를 닫으려면 어떻게해야합니까? 내가 그것을하는 방법을 찾은 유일한 방법은 프로그래밍 방식으로 필드를 UI에 추가하는 것입니다. 편집기를 사용하여이를 수행 할 수있는 방법이 있습니까? 나는 그것이 같은 것을했다 할 것으로아이폰 시뮬레이터에서 키보드 닫기

@interface Login : UIViewController{ 
RootViewController *rootViewController; 
IBOutlet UITextField *usernameField; 
IBOutlet UITextField *passwordField; 
IBOutlet UIButton *loginButton; 
} 
@property (nonatomic, retain) UITextField *usernameField; 
@property (nonatomic, retain) UITextField *passwordField; 
@property (nonatomic, retain) UIButton *loginButton; 
@property (nonatomic, retain) RootViewController *rootViewController; 
- (IBAction) login: (id) sender; 

@end 

유일한 방법 : 여기

내 헤더 파일입니다

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
[textField resignFirstResponder]; 
return YES; 
} 
- (void)loadView 
{ 
self.view = contentView; 
[contentView release]; 
// Create a field with a Done return key 
usernameField = [[[UITextField alloc] initWithFrame:CGRectMake(120.0f, 40.0f, 150.0f, 30.0f)] retain]; 
[usernameField setBorderStyle:UITextBorderStyleRoundedRect]; 
usernameField.placeholder = @"name"; 
usernameField.returnKeyType = UIReturnKeyDone; 
usernameField.clearButtonMode = UITextFieldViewModeWhileEditing; 
usernameField.delegate = self; 
[contentView addSubview:usernameField]; 
[usernameField release]; 
} 

프로그램 뷰와이 문제를이 방법을 fields.Is 추가 ?

답변

2

여러 가지 방법으로 해결할 수 있습니다. 한 가지 방법은 프레임 상단을 조정하여 키보드가 활성화되면 필드와 버튼이 포함 된보기를 슬라이드하는 것입니다. UITextFieldDelegate를보십시오. 텍스트 필드가 테이블 뷰에 있으면 테이블 뷰의 높이를 축소 할 수 있습니다.

사용자가 텍스트 필드 외부를 누를 때 키보드를 숨기려면보기에 UIGestureRecognizer를 추가 할 수 있습니다. 탭이 감지되면 활성 텍스트 필드에 resignFirstResponder를 알릴 수 있습니다.

+0

보기에서 제스처 인식기의 문제점은 하위보기에도 적용된다는 것입니다. 즉, 필드를 두드리면 제스처 인식기가 호출되고 키보드가 나타나지 않습니다. 그러나, 어떤 종류의보기가 두드려 졌는지 결정하기 위해 히트 테스트를 수행하고 그에 따라 진행할 수 있습니다. –

+0

일부 오래된 코드를 보면 UITapGestureRecognizer를 사용했습니다. cancelsTouchesInView = NO 속성을 설정했습니다. 내 탭 핸들러는 기본적으로 키보드의 공간을 채우기 위해 뷰의 크기를 조정합니다. – bbarnhart

+0

오, 제 생각에 당신은 UITapGestureRecognizer를 사용하여 첫 번째 응답자를 사퇴하는 것에 대해 이야기하고 있다고 생각했습니다. –

1

더 좋은 방법은 UIKeyboard 알림을 수신하고보기가 적절하게 조정되어 키보드가 나타날 때 전체 양식이 표시되도록하는 것입니다. 거기에서 첫 번째 응답자 상태를 가진 텍스트 필드에 따라 적절한 조치를 취하기 위해 키보드의 반환 버튼을 연결할 수 있습니다. 예를 들어, username 필드에서 return을 누르면 password 필드로 이동하고 password 필드에서 그것을 누르면 login 버튼을 누르는 것과 같습니다. 키보드를 수동으로 관리 할 필요가 없습니다.

+0

+1 사용자가 키보드를 닫아야 볼 수있는 것을 볼 필요가있는 것보다 나은 해결책입니다. –

0

또 다른 방법은 "완료"버튼이있는 UITextField에 대한 inputAccessoryView를 갖는 것입니다.이 버튼은 클릭 할 때 키보드를 종료합니다.

0

스크롤보기에 모든 것을 넣고 키보드가 첫 번째 응답 인 경우 키보드 높이를 스크롤보기 높이에 추가합니다. 키보드가 사라지면 반전하십시오.

관련 문제