9

UIView在 Today 小部件中使用了一个子类。该视图使用滑动手势。但是,这些手势要么上下滚动整个通知中心,要么让通知中心从Today切换到Notifications

有什么方法可以防止触摸事件冒泡到通知中心滚动视图?不幸的是,在子类中使用[self setExclusiveTouch:YES];并没有解决它。

4

3 回答 3

4

有什么方法可以防止触摸事件冒泡到通知中心滚动视图?使用 [self setExclusiveTouch:YES]; 不幸的是,在子类中没有解决它。

不,因为您的 Today 小部件正在内部呈现远程视图托管,[self setExclusiveTouch:YES]所以并不能完全满足您的需求。

iOS 8.0 中的粗略架构是:

[用户触摸创建一个UITouch]
            |
            v
通知中心(UIScrollView)
            |
            v
  UIRemoteView 容器
  (呈现你的 UIView)
[跨越流程边界]
            |
            v
你的 Today 小部件的 UIView

将触摸视为跨越过程边界时基本上被克隆。您的视图的专有触摸需求仅与您的小部件的进程空间/窗口相关,并且不会向外传播回远程托管您的通知中心。

于 2014-10-17T22:53:53.767 回答
3

正如另一个答案中提到的,苹果官方建议:

避免将滚动视图放在小部件内。用户很难在不无意中滚动“今日”视图的情况下在小部件内滚动。

这是来自 Apple 的写得很糟糕的建议。在 Today 小部件中使用滚动视图非常好,但您必须禁用滚动,以免干扰。Apple 甚至在他们的 WWDC 演讲中使用了 UITableView。

基本上它建议您不要干扰通知中心现有的手势。
现有的手势恰好在所有四个方向上滚动,因此您可以在小部件中使用手势执行的操作非常有限。

你想达到什么样的姿态?您提到了滑动,但如果您这样做,您将干扰现有的手势并破坏事物。这种行为在小部件中是不允许的,因为它会影响操作系统本身的用户体验。

也许您应该考虑采取不同的方法来处理您的行为?

于 2014-07-14T10:03:09.987 回答
1

根据 Apple 的 App Extensions Programming Guide:

“避免将滚动视图放在小部件内。用户很难在小部件内滚动而不会无意中滚动今日视图。”

于 2014-07-10T23:53:01.557 回答