我想知道的是当用户点击模态对话框之外时如何识别。 我试过这个,但是当用户点击外面时它没有被调用。
这是我的viewDidLoad方法,它驻留在ModalDialogViewController.m文件中 UITapGestureRecognizer *识别器;
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的协议。
答案 0 :(得分:3)
这里有点晚了,但只是想让某人通过谷歌来到这里:
设置手势识别器应该在视图出现后进行。在viewDidLoad方法调用期间,视图的窗口为nil,因此手势识别器永远不会被添加。
将方法调用放在viewDidAppear中,它应该按预期工作。
答案 1 :(得分:0)
你有没有在你的.h文件中设置UIGestureRecognizerDelegate?
您可以在Apple doc
中获取有关UIGestureRecognition行为的完整信息使用UIGestureRecognizers非常简单。您只需执行以下步骤: 创建手势识别器。创建手势识别器时,您可以指定一种回调方法,以便手势识别器可以在手势开始,更改或结束时向您发送更新。
将手势识别器添加到视图中。每个手势识别器与一个(且仅一个)视图相关联。当在该视图的边界内发生触摸时,手势识别器将查看它是否与其正在寻找的触摸类型匹配,如果找到匹配,则它将通知回调方法。
您可以以编程方式执行这两个步骤,但使用Storyboard编辑器直观地添加手势识别器会更容易。