在顶级UIView上使用UIPanGestureRecognizer和UITapGestureRecognizer .
Interface Builder中的设置:
-
ViewController (我们的主视图控制器)
-
UIView (我们的主视图并连接到我们的UIViewController
-
我们的核心 UIView 有一个名为“ Block ”的子视图,它只是一个 UIView .
-
Block 视图有4个 subviews (子),每个都是 UIButton 的一个实例 .
-
UIButton 将 Touch Up Inside 事件连接到UIViewController .
-
UIView(我们的主要顶级UIView)有 UIPanGestureRecognizer 和 UITapGestureRecognizer
这是我们要完成的场景(a.k.a . 行为):
-
用户点击按钮(单元格) .
-
该按钮将其声明从“正常”更改为“已选择” . (这很好,代码很简单)
-
使用所选项目,用户可以将手指放在屏幕上的任何位置,然后向上或向下移动
问题:
-
需要知道平移何时停止 .
-
顶级UIView没有收到声明已结束的手势 .
-
UIView没有收到touchesEnded事件 .
你怎么知道用户何时抬起手指?假设当我的手指在UIButton上方时我开始平移,而在发生平移时,UIButton会尝试触摸开始和结束事件 . 因此,您无法知道用户何时停止在iPhone / iPad玻璃上移动手指 .
1 回答
首先在视图控制器中实现
UIGestureRecognizerDelegate
. 然后将手势识别器上的委托设置为self并实现以下方法您的目标方法应如下所示: