大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中为两个函数提取手势识别器?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
要么,
作为一个单独的功能,你可以左右移动你的手指做某事(想象一下,“改变颜色”或“旋转”).
他们是
分离
因此,如果它“以”开始“为横向版本,它仍然只是一个横向版本.相反,如果它“开始”为垂直版本,它仍然只是一个垂直版本.
这样做有点棘手,我将在下面介绍如何做到这一点……基本模式是:
if (r.state == .began || panway == .WasZeros ) { prev = tr if (tr.x==0 && tr.y==0) { panway = .WasZeros return } if (abs(tr.X)>abs(tr.y)) ... set panway }
这非常有效,这里是如何在Swift中完成的.
在storyboard中使用UIPanGestureRecognizer,将其拖到相关视图中.将代理连接到视图控制器并将插座设置为此调用ultraPan:
enum Panway { case Vertical case Horizontal case WasZeros } var panway:Panway = .Vertical var prev:CGPoint! @IBACtion func ultraPan(r:UIPanGestureRecognizer!) { let tr = r.translationInView(r.view) if (r.state == .began || panway == .WasZeros ) { prev = tr if (tr.x==0 && tr.y==0) { panway = .WasZeros return } if (abs(tr.X)>abs(tr.y)) { panway = .Horizontal } else { panway = .Vertical } } if (panway == .Horizontal) // your left-right function { var h = tr.x - prev.x let sensitivity:CGFloat = 50.0 h = h / sensitivity // adjust your left-right function,example someProperty = someProperty + h } if (panway == .Vertical) // bigger/smaller { var v = tr.y - prev.y let sensitivity:CGFloat = 2200.0 v = v / sensitivity // adjust your up-down function,example someOtherProperty = someOtherProperty + v } prev = tr }
没关系.
但是创建UIPanGestureRecognizer的新子类(或其他东西)肯定会更好,因此有两个新概念……
UIHorizontalPanGestureRecognizer UIVerticalPanGestureRecognizer
我完全不知道你是否会……委托子类化?还是上课? (什么类?),或者某种扩展……的确,我基本上对此完全无能为力:)
@IBACtion func horizontalPanDelta( ..? ) { someProperty = someProperty + delta } @IBACtion func verticalPanDelta( ..? ) { otherProperty = otherProperty + delta }
如何以这种方式继承/扩展UIPanGestureRecognizer?
正确.这正是如何做到的,这是正常的做法.实际上,这正是手势识别器的用途:每个g.r.仅识别其自己的手势,并且当它确实时,它会使竞争的手势识别器退避.这就是手势识别器的重点!否则,我们仍然会回到前期.纯粹触动的日子等等(哦,恐怖).
http://www.apeth.com/iOSBook/ch18.html#_subclassing_gesture_recognizers
观察此处使用的策略.我们制作UIPanGestureRecognizer子类.我们覆盖了touchesBegan和touchesMoved:一旦识别开始,我们就会在看到下一次触摸沿着错误的轴时失败. (您应该观看Apple关于此主题的视频;正如他们所说,当您将手势识别器子类化时,您应该“提前失败,经常失败”.)我们还会覆盖translationInView,以便只能直接沿轴移动.结果(如果您下载项目本身就可以看到)是一个可以水平或垂直拖动但不以其他方式拖动的视图.
以上是大佬教程为你收集整理的ios – 在Swift中为两个函数提取手势识别器?全部内容,希望文章能够帮你解决ios – 在Swift中为两个函数提取手势识别器?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。