这是一个相当假设的问题,只是为了理解正确的设计,但可以说我有两个自定义的UIViews。正确的UIGestureRecognizer和委托设计
其中之一基本上是我会打电话给一个抽屉的容器。其目的是隐藏和显示内容。这很像iOS上的通知中心,您可以通过滑动将其打开并弹回以关闭它。它是一个通用容器,可以包含任何其他UIView。它有一个UIPanGestureRecognizer来跟踪拉开它的手指。它也可能有一个UISwipeGestureRecognizer来检测“轻弹”。
另一种观点是,具有UIPan /旋转/捏GestureRecognizers定制地图工具。
我认为抽屉视图应该是Pan/Swipe GestureRecognizers的UIGestureRecognizerDelegate,这样它可以防止触摸被传递,除非用户抓住“手柄”。
我的第一个直觉是地图是平移/旋转/捏手势的UIGestureRecognizerDelegate,以便它可以允许它们全部同时运行。
我遇到的问题是,我真的不希望地图接收任何接触或开始识别姿势,直到抽屉是完全开放的。我希望能够在抽屉本身自动执行此行为,以便它可以立即适用于所有子视图。
我能想到做到这一点的唯一方法是将所有的手势处理程序连接到ViewController并让它做所有事情,但是对于打破封装的我来说,它必须知道地图手势需要运行同时,抽屉只能触及它的手柄,并且地图只有在打开时才能触及。
什么是这样做,其中的逻辑可以留在地方意见,我认为它属于的一些方法?
我不能说这个解决方案不起作用,但它不在可用的手势工具中。那是因为Superviews没有适当的方式来控制他们的Subviews手势行为(除了作为代表)吗? – cjserio 2015-02-25 12:23:09