【问题标题】:Modal views and touchesBegan模态视图和触摸开始
【发布时间】:2010-07-13 18:00:11
【问题描述】:

这个问题是以下问题的后续:

UITouch - Event not responding

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

我有一个 RootViewController,然后我使用以下代码加载第二个 ViewController:

[self presentModalViewController:newWorkoutViewController animated:YES];

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

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

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

谢谢 斯蒂芬

【问题讨论】:

    标签: iphone xcode modalviewcontroller touchesbegan


    【解决方案1】:

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

    【讨论】:

    • 它们是在我的视图控制器上定义的。
    • 问题已解决...在 NewWorkoutViewController 我有另外两个按钮可以调用另外两个视图控制器。我没有正确设置这些设置,所以当点击/点击屏幕时它没有注册。感谢您的帮助。
    • 只是想知道,您不需要在视图上定义touchesBegan并添加super touchesBegan吗?
    • @Cawas:如果你的意思是添加代码到看起来像- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; } 的视图中,不,因为默认调用 UIView 的实现(将触摸传播到响应者链)。顺便说一句,如果您处理触摸,您不应该超级呼叫(并且您还应该覆盖 touchesMoved/Ended/Cancelled 以不超级呼叫),或者“下一个响应者”也将尝试处理触碰。下一个响应者是关联的视图控制器,如果有的话。
    【解决方案2】:

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

    【讨论】:

    • 用户交互已启用。要创建辅助视图控制器,我右键单击我的类文件夹并添加了一个新文件,然后选择 UIViewController 子类,检查用户界面的 XIB。
    • 问题已解决...在 NewWorkoutViewController 我有另外两个按钮可以调用另外两个视图控制器。我没有正确设置这些设置,所以当点击/点击屏幕时它没有注册。感谢您的帮助。
    • @Stephen:我现在遇到了同样的问题,我想在用户点击外部时关闭模式视图(这是一个“表单”样式视图,所以它只覆盖中心iPad 的)——你的按钮到底有什么问题?
    【解决方案3】:

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

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

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

    【讨论】:

    • 谢谢你的意思我明白你的意思,如果你有时间可以看看这个示例代码...mediafire.com/?wmjc2ffntzc最终我想实现这个,基于你上面所说的我不明白这家伙是如何在文本框上实现触摸事件的,即当点击文本框时,选择器弹出。
    猜你喜欢
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多