2013-09-30 2 views
0

있는 UIButton을 터치하면 작동하지 않습니다이 :내가 내 헤더 파일에 선언 한

UITapGestureRecognizer* tap; 

그리고 viewDidLoad에 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                action:@selector(hideKeyboard)]; 
    tap.enabled = NO; 
    [self.view addGestureRecognizer:tap]; 
} 

I 난 아무데도 오에 닿으면

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    tap.enabled = YES; 

    return YES; 
} 

: UITextFieldDelegate를 추가하고,이를 추가했습니다 ' 키보드를 사용하면 사라집니다. 그러나 내가 UIButton으로 만지면 사라지지 않습니다.

이유를 알고 계십니까?

+0

은 [이]를 살펴 보자 (http://stackoverflow.com/questions/3344341/uibutton -inside-a-view-a-uitapgesturerecognizer) – luiso1979

답변

0

UIButton은 터치를 가로 채고 처리합니다 (전달하지 않음).

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

그러나 버튼을 누를 때 귀하의 경우 내가 그것을 그 화재 방법에 키보드를 기각하기에 충분하다고 생각 : 하나의 옵션은 제스처 인식기 대리인으로보기 컨트롤러를 설정하고 방법을 구현하는 것 .

0
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; 
    tapGestureRecognizer.delegate = self; 
    tapGestureRecognizer.numberOfTapsRequired = 1; 
    [self.view addGestureRecognizer:tapGestureRecognizer]; 


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 


    if (touch.view == self.button) {//change it to your condition UIButton 
     return NO; 
    } 
    return YES; 
} 

-(void)dismissKeyboard 
{ 
    [self.textField resignFirstResponder]; 
} 
0

사용자가 버튼을 아래로 닿을 때의 타겟 - 액션 쌍을 추가

[button addTarget:self 
      action:@selector(dismissKeyboard) 
forControlEvents:UIControlEventTouchDown]; 
관련 문제