私が知りたいのは、ユーザーがモーダル ダイアログの外をタップしたことを認識する方法だけです。これを試しましたが、ユーザーが外側をタップしても呼び出されません。
これは、ModalDialogViewController.m ファイル UITapGestureRecognizer *recognizer; にある私の viewDidLoad メソッドです。
if(![self.view.window.gestureRecognizers containsObject:recognizer])
{
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];
//[recognizer setDelegate:self];
[recognizer setNumberOfTapsRequired:1];
recognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view
[self.view.window addGestureRecognizer:recognizer];
}
これは handleTapBehind メソッドを開いているわけではありません。
モーダル ビュー コントローラーを UIGestureRecognition のプロトコルにしました。