正确处理多个视图的触摸

时间:2013-07-20 09:54:38

标签: iphone ios objective-c cocoa-touch hittest

我目前有一个项目,我使用此控件呈现HUD:

https://github.com/samvermette/SVProgressHUD

我在一个复杂的UIViews和ScrollViews层次结构中展示了SVProgress HUD。

SVProgressHUD有点像UIAlertView,它会显示一条消息,但它会自动解散。

在我的应用程序的一部分中,每次用户弹出UIScrollView中的页面时,我都会使用它。

autodismiss功能很好但我希望用户能够点击hud并在需要时提前解除它。

所以我知道SVProgressHUD会向通知中心发布通知

SVProgressHUDDidReceiveTouchEventNotification

这很好,我所做的就是在我的主viewController中添加一个通知观察器,它在SVProgressHUD上调用一个类方法,在发布SVProgressHUDDidReceiveTouchEventNotification时解除任何呈现的HUD。

我的问题(和问题是)如何确保此解除方法不会干扰我的滚动视图?

我希望我的用户能够快速浏览滚动视图内容页面,但是自从我开始收听此通知后,滚动视图不会对用户的第一次触摸做出反应,它会使用第一次触摸解雇HUD。这感觉非常笨重。

问题是SVProgressHUDDidReceiveTouchEventNotification正在发布,即使未触摸HUD,而是触摸下方的Scrollview。如何在我的dismiss方法中添加一个hittest来检查是否因为HUD本身被触摸而发布SVProgressHUDDidReceiveTouchEventNotification

谢谢!

1 个答案:

答案 0 :(得分:1)

我在 SVProgressHUD 中实施了touchesEnded并处理那里的触摸。