Swift 简单封装UISwipeGestureRecognizer + 闭包回调监听事件,便于不同场景的 UIView调用
来源:互联网 发布:网络空间安全期刊 编辑:程序博客网 时间:2024/06/06 10:58
typealias sendValueClosure = (swipeGesture: UISwipeGestureRecognizer) -> Void</span>class SwipeGesture:NSObject { //声明一个闭包 var myClosure: sendValueClosure? //下面的方法需要传入上个界面的someFunctionThatAClosure函数指针 func initWithClosure(closuer: sendValueClosure?) { //讲函数指针赋值给myClosure闭包,该闭包中覆盖了someFunctionThatTakesAClosure函数中的局部变量等引用 self.myClosure = closuer } func setSwipeGesture(view:UIView){ //设置手势 let swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeRight.direction = UISwipeGestureRecognizerDirection.Right view.addGestureRecognizer(swipeRight) let swipeLeft = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeLeft.direction = UISwipeGestureRecognizerDirection.Left view.addGestureRecognizer(swipeLeft) let swipeUp = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeUp.direction = UISwipeGestureRecognizerDirection.Up view.addGestureRecognizer(swipeUp) let swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeDown.direction = UISwipeGestureRecognizerDirection.Down view.addGestureRecognizer(swipeDown) } //事件 func respondToSwipeGesture(gesture: UIGestureRecognizer){ if let swipeGesture = gesture as? UISwipeGestureRecognizer { if let closure = self.myClosure { closure(swipeGesture: swipeGesture) } } }}这个类功能就是封装UISwipeGestureRecognizer,添加上下左右4种滑动手势及相应的时间,这些都不重要,重要的是:
//声明一个闭包 var myClosure: sendValueClosure? //下面的方法需要传入上个界面的someFunctionThatAClosure函数指针 func initWithClosure(closuer: sendValueClosure?) { //讲函数指针赋值给myClosure闭包,该闭包中覆盖了someFunctionThatTakesAClosure函数中的局部变量等引用 self.myClosure = closuer }
声明的闭包myClosure在类的最上面那句代码:
typealias sendValueClosure = (swipeGesture: UISwipeGestureRecognizer) -> VoidinitWithClosure(closure: sendValueClosure)这个函数是被我们UIView源文件调用的。
下面respondToSwipeGesture(gesture:UIGestureRecognizer)事件触发的时候,里面的
if let closure = self.myClosure { closure(swipeGesture: swipeGesture)}
是把UISwipeGestureRecognizer当做参数返回给闭包。
下面就是我们的 UIView 源文件调用啦:
//实例化类let mySwipeGesture = SwipeGesture()// 给 UIView 添加手势mySwipeGesture.setSwipeGesture( yourView)//调用闭包监听事件mySwipeGesture.initWithClosure { (swipeGesture) -> Void in switch swipeGesture.direction { case UISwipeGestureRecognizerDirection.Right: print("Swiped right") case UISwipeGestureRecognizerDirection.Left: print("Swiped left") case UISwipeGestureRecognizerDirection.Up: print("Swiped up") case UISwipeGestureRecognizerDirection.Down: print("Swiped down") default: break }}
0 0
- Swift 简单封装UISwipeGestureRecognizer + 闭包回调监听事件,便于不同场景的 UIView调用
- 调用UIview封装的动画
- Swift 封装UIView
- 二维码的简单封装(swift)
- Swift UIview简单动画
- swift UIView简单动画
- java 事件的监听不同的方法
- JavaScript不同监听事件的方法
- 对同一监听事件的不同响应
- 事件监听的简单例子
- 简单的一些监听事件
- 封装事件监听兼容
- 不同浏览器事件监听
- 简单计算器,使用一个监听来绑定不同都事件
- 封装-给继承自UIView的控件添加点击事件
- touch事件的简单封装
- 封装多次调用的方法,参数不同
- swift中对AFNetWorking的简单封装
- 如何做好架构之识别问题
- chmod命令
- IntelliJ IDEA 15破解
- PAT——选大王
- C++ bind
- Swift 简单封装UISwipeGestureRecognizer + 闭包回调监听事件,便于不同场景的 UIView调用
- unity3d 性能优化技巧(持续更新)
- gradle 多flavors生成apk
- Java多线程八
- 200. Number of Islands
- iOS 中 set,get方法
- 读Log文件,当文件大小变化时打开文件,从新添加的几行读
- TC SRM 683 div2 MoveStonesEasy 贪心
- DSB,ISB,DMB指令