我UIView
在 Today 小部件中使用了一个子类。该视图使用滑动手势。但是,这些手势要么上下滚动整个通知中心,要么让通知中心从Today切换到Notifications。
有什么方法可以防止触摸事件冒泡到通知中心滚动视图?不幸的是,在子类中使用[self setExclusiveTouch:YES];
并没有解决它。
我UIView
在 Today 小部件中使用了一个子类。该视图使用滑动手势。但是,这些手势要么上下滚动整个通知中心,要么让通知中心从Today切换到Notifications。
有什么方法可以防止触摸事件冒泡到通知中心滚动视图?不幸的是,在子类中使用[self setExclusiveTouch:YES];
并没有解决它。
有什么方法可以防止触摸事件冒泡到通知中心滚动视图?使用 [self setExclusiveTouch:YES]; 不幸的是,在子类中没有解决它。
不,因为您的 Today 小部件正在内部呈现远程视图托管,[self setExclusiveTouch:YES]
所以并不能完全满足您的需求。
iOS 8.0 中的粗略架构是:
[用户触摸创建一个UITouch] | v 通知中心(UIScrollView) | v UIRemoteView 容器 (呈现你的 UIView) [跨越流程边界] | v 你的 Today 小部件的 UIView
将触摸视为跨越过程边界时基本上被克隆。您的视图的专有触摸需求仅与您的小部件的进程空间/窗口相关,并且不会向外传播回远程托管您的通知中心。
正如另一个答案中提到的,苹果官方建议:
避免将滚动视图放在小部件内。用户很难在不无意中滚动“今日”视图的情况下在小部件内滚动。
这是来自 Apple 的写得很糟糕的建议。在 Today 小部件中使用滚动视图非常好,但您必须禁用滚动,以免干扰。Apple 甚至在他们的 WWDC 演讲中使用了 UITableView。
基本上它建议您不要干扰通知中心现有的手势。
现有的手势恰好在所有四个方向上滚动,因此您可以在小部件中使用手势执行的操作非常有限。
你想达到什么样的姿态?您提到了滑动,但如果您这样做,您将干扰现有的手势并破坏事物。这种行为在小部件中是不允许的,因为它会影响操作系统本身的用户体验。
也许您应该考虑采取不同的方法来处理您的行为?
根据 Apple 的 App Extensions Programming Guide:
“避免将滚动视图放在小部件内。用户很难在小部件内滚动而不会无意中滚动今日视图。”