UIScrollView 内に UITextField と UIButton がいくつかあり、このスクロール ビューは UIViewController のビュー内にあります。表示されている場合にキーボードを閉じるタッチ ジェスチャ レコグナイザーを追加しました。
UITapGestureRecognizer *tapToDismissKeyboard = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
[tapToDismissKeyboard setCancelsTouchesInView:NO];
tapToDismissKeyboard.delegate = self;
[self.view addGestureRecognizer:tapToDismissKeyboard];
#pragma mark UITapGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isDescendantOfView:self.signupButton_] || [touch.view isDescendantOfView:self.profilePictureImageView_] || [touch.view isDescendantOfView:self.signupUsingFacebook_]) {
return NO; // ignore the touch
}
return YES; // handle the touch
}
問題は、サインイン/サインアップボタンをタップすると、実際にボタンのタッチが必要なタップジェスチャが検出されることです。