在iOS 8今日扩展中拖动手势
我在Today小部件中使用了UIView
子类。 该视图使用滑动手势。 但是,这些手势要么上下滚动整个通知中心,要么将通知中心从今天切换到通知 。
有没有办法阻止触摸事件冒泡到Notification Center滚动视图? 使用[self setExclusiveTouch:YES];
在子类中没有解决它不幸。
有没有办法阻止触摸事件冒泡到Notification Center滚动视图? 使用[self setExclusiveTouch:YES]; 在子类中没有解决它不幸。
不会。由于远程视图托管您的Today小部件正在内部显示, [self setExclusiveTouch:YES]
并不能完全按照您的要求进行操作。
iOS 8.0中的粗略架构是:
[用户触摸创建UITouch] | v 通知中心(UIScrollView) | v UIRemoteView容器 (介绍你的UIView) [跨过程边界] | v 你的今日小部件的UIView
可以认为触摸在穿过过程边界时基本上被克隆了。 您的视图的独有触摸欲望仅与您的窗口小部件的进程空间/窗口相关,并且不会向外传播到远程托管您的通知中心。
苹果官方建议在另一个答案中提到:
避免在窗口小部件中放置滚动视图。 用户很难在窗口小部件中滚动,而不会无意中滚动今日视图。
这是来自Apple的非常糟糕的书面建议。 在Today窗口小部件中使用滚动视图是完全正确的,但您必须禁用滚动以使其不会干扰。 Apple甚至在他们的WWDC谈话中使用UITableView。
基本上它建议您不要干扰通知中心现有的手势。
现有的手势恰好在所有四个方向上滚动,因此您在小部件中使用手势可以做的事情非常有限。
你想要达到什么样的姿态? 你提到了滑动,但如果你这样做,你就会干扰现有的手势并打破局面。 在小部件中不允许这种行为,因为它会影响操作系统本身的UX。
也许你应该考虑采取不同的方法来处理你的行动?
根据Apple的App Extensions编程指南:
“避免在窗口小部件中放置滚动视图。用户很难在窗口小部件中滚动而不会无意中滚动今日视图。”