模态视图和touchesBegan

时间:2010-07-13 18:00:12

标签: iphone xcode modalviewcontroller touchesbegan

这个问题来自以下内容:

UITouch - Event not responding

我做了更多的研究,我知道问题是什么,但我不知道如何解决它,或者即使它可以解决。我可能不得不采取新的方法。

我有一个RootViewController,我从这里使用以下代码加载第二个ViewController:

[self presentModalViewController:newWorkoutViewController animated:YES];

然后我在NewWorkoutViewController中有以下代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"New Workout Screen tapped");
}

这个方法没有被采取行动,我认为这是因为它是一个模态视图。无论如何都要在模态视图中检测屏幕上的点击。

由于 斯蒂芬

3 个答案:

答案 0 :(得分:2)

在视图控制器上定义相关方法,而不是在视图上定义。

答案 1 :(得分:1)

您的假设不正确。以模态方式显示视图控制器与它无关。触摸在模态视图中的工作方式与在任何其他视图中的工作方式相同。您很可能在视图中未启用用户交互。你是如何创建辅助视图控制器的?

答案 2 :(得分:1)

如果视图中没有用于接收事件的控件,则仅将事件发送到ViewController。例如,如果视图中有一个按钮,并且触摸该按钮,该按钮将获取触摸事件,而不是ViewController。

操作系统使用pointInside:withEvent:方法确定发送事件的位置,然后调用hitTest:withEvent:可以在视图中覆盖这些事件,并查看获取事件的对象。

此外,hitTest会忽略任何隐藏的,禁用用户交互或alpha级别小于0.1的视图:withEvent: