2014-02-24 8 views
0

다음으로, 화면의 아무 곳이나 클릭 할 때 가상 키보드를 닫으려면 기존 뷰 UITextFields와 바인딩하는 변수의 이름과 함께 touchesBegan 메소드를 구현해야한다는 것을 알게되었습니다. 우리는 약 10 텍스트 필드가있는 경우touchesBegan 최적화 UITextField

는, 내가이 명령을 10 번 반복해야 할 것을 알게 :

[MyFristTextField resignFristResponder]; 
[MySecondTextField resignFristResponder]; 
... 
[MyTenTextField resignFristResponder]; 

이 작업을 수행 할 수있는 쉬운 방법이 없기를, 예를 들어, 한 번에 UITextFields를 호출?

답변

0

속성의 현재 UITextField에 대한 참조를 유지하십시오. 그런 다음 키보드를 닫으려면 resignFirstResponder을 해당 UITextField로 보냅니다.

+0

나에게 exemple주세요, 제발 – user3344322

0

10 번 구현할 필요가 없습니다. 당신이 할 수있는 일

는 그냥 사용 :

[self.view endEditing:YES]; 

당신이 탭 Gesturrecgnizer에서 호출하는 방법에. 예를 들어

:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
    { 
    self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self   action:@selector(closeAllKeyBourds)]; 
    [self.view addGestureRecognizer:self.tap]; 
    } 

    { 
[self.view endEditing:YES]; 
[self.view removeGestureRecognizer:self.tap]; 
self.tap = nil; 
    } 

팁 :

self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeAllKeyBourds)]; 
    [self.view addGestureRecognizer:self.tap]; 

귀하의 코드가 같은 것을 보여야 다음 스크롤 뷰에

하는 10 개의 텍스트 필드를 사용하는 경우, 당신은 더 나은 곳으로, 낮은 텍스트 필드를 사용할 때 스크롤 뷰를 들어 올릴 수 있습니다.

희망이 도움이됩니다.

편집

당신은 탭이 발생했을 때 참조 할 수 있도록, 인스턴스 변수, 또는 TapGestureRecognizer의 속성을 유지해야합니다. 그래서 당신은 당신의 @inerface의 속성을 유지, 그것과 같이 보일 것입니다 :

//At your interface: 
    @interface LogInpageViewController : UIViewController 
    //Keep a property 
    @property (nonatomic,strong) UITapGestureRecognizer *tap; 
+0

'탭'은 무엇인가? 에로스를 컴파일 ... – user3344322

+0

내 대답을 편집했습니다. – MCMatan

+0

죄송합니다! 모든 TextFields 호출을 닫습니다. [self.view endEditing : YES]; – MCMatan