我一直觉得iOS中的UIGesture使用起来非常别扭,在github上搜了一圈也没有顺手的,于是我就自己撸了一个:NiceGesture。
使用
TapGesture:
因为tap手势只有一种状态,所以这个手势的处理只需要调用<code>whenTapped</code>方法:
view.nc_whenTapped {(tapGestureRecognizer) -> () in
//doSomething()
}
如果你需要配置tapGestureRecognizer,就先调用<code>nc_addTapGestureWithConfigClosure</code>方法,在这个参数闭包里配置,接着继续调用<code>whenTapped</code>方法:
view.nc_addTapGestureWithConfigClosure { (tapGestureRecognizer) -> () in
// Configure gesture recognizer,like this:
tapGestureRecognizer.numberOfTapsRequired=2
}.whenTapped {(tapGestureRecognizer) -> () in
//doSomething()
}
其他手势:
如果你需要配置这些手势,如上面tap的处理方法,调用<code>nc_addxxxxGestureWithConfigClosure</code>方法:
view.nc_addxxxxGestureWithConfigClosure({ (gestureRecognizer) -> () in
//Configure gesture recognizer
})
如果不需要配置,直接调用add方法就可以:
view.nc_addxxxxGesture()
接着,重点来了,在添加完手势后,支持链式编程,可以连续处理几种不同的状态,避免了代码嵌套的问题,代码看起来也会更整洁。
view.nc_addPanGesture()
.whenBegan { (gestureRecognizer) -> Void in
}.whenCancelled { (gestureRecognizer) -> Void in
}.whenChanged { (gestureRecognizer) -> Void in
}.whenEnded { (gestureRecognizer) -> Void in
}.whenFailed { (gestureRecognizer) -> Void in
}
好吧,有的时候你会想用一个闭包同时处理几种状态,那么你就使用<code> whenStatesHappend </code>方法,参数是一个手势识别state的数组:
lbState.nc_addPanGesture().whenStatesHappend([.Ended,.Changed]) { (gestureRecognizer) -> Void in
}
安装
支持pod
在pod file中输入以下:
platform :ios, '8.0'
use_frameworks!
pod 'NiceGesture'
Carthage
近期会支持,请稍候。
联系我
欢迎提建议,可以直接提issue,或者微博上联系我也行:@没故事的卓同学。
谢谢支持。