IOS开发之手势的学习
来源:互联网 发布:cloverv3.3是什么软件 编辑:程序博客网 时间:2024/05/23 13:39
在ios开发中,有系统内置的手势,同时我们也可以创建自己的手势。estureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象,当发生手势,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation).如果它能识别这个手势,那么就会向绑定它的view发送消息。
UIKit框架提供了一些预定义的GestureRecognizer.包含下列手势
- UITapGestureRecognizer敲击手势(单击和双击)
- UIPanGestureRecognizer(拖动手势)
- UIPinchGestureRecognizer(缩放手势)
- UISwipeGestureRecognizer(擦碰手势)
- UIRotationGestureRecognizer(旋转手势)
- UILongPressGestureRecognizer(长按手势)
1、UIGestureRecognizerStatePossible (识别器还没识别手势,但是可能评估触摸事件,为默认状态)
2、UIGestureRecognizerStateBegan (识别器已经识别出手势,runloop将调用其对应的响应事件)
3、UIGestureRecognizerStateChanged (识别器已经识别出手势,runloop将调用其对应的响应事件)
4、UIGestureRecognizerStateEnded (识别器已经识别出手势将要结束,响应事件将要发生,手势的状态将要改为默认状态)
5、UIGestureRecognizerStateCancelled (识别器识别手势被取消,手势将要恢复默认状态)
6、UIGestureRecognizerStateFailed (识别器无法识别手势,不会调用响应手势,手势状态将要恢复为默认状态)
UIGestureRecognizer继承于NSObject
1、初始化方法
- (instancetype)initWithTarget:(id)target action:(SEL)action;// designated initializer
2、手势对应事件的添加与移除
- (void)addTarget:(id)target action:(SEL)action;
- (void)removeTarget:(id)target action:(SEL)action;
3、属性
@property(nonatomic,readonly)UIGestureRecognizerState state; (通过此属性我们可以获取手势的实时状态)
@property(nonatomic,assign)id <UIGestureRecognizerDelegate> delegate; (通过设置其代理,可以调用其代理方法)
@property(nonatomic,getter=isEnabled)BOOL enabled (若为no则无法识别手势,默认为yes)
@property(nonatomic,readonly)UIView *view (手势所依附的view)
@property(nonatomic)BOOL cancelsTouchesInView
4、方法
- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer; (该手势响应时其他手 势为无效)
- (CGPoint)locationInView:(UIView*)view; (获取手势触摸点)
- (NSUInteger)numberOfTouches; (获取手势点击次数)
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)view (获取一个特定的触摸事件所触摸的位置)
5、代理方法
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer (此方法在gesture recognizer视图转出UIGestureRecognizerStatePossible状态时调用,如果返回NO,则转换到UIGestureRecognizerStateFailed;如果返回YES,则继续识别触摸序列.(默认情况下为YES)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; (如果返回YES,则两个gesture recognizers可同时识别,如果返回NO,则并不保证两个gesture recognizers必不能同时识别,因为另外一个gesture recognizer的此方法可能返回YES。也就是说两个gesture recognizers的delegate方法只要任意一个返回YES,则这两个就可以同时识别;只有两个都返回NO的时候,才是互斥的。默认情况下是返回NO)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognize
r:(UIGestureRecognizer *)otherGestureRecognizerNS_AVAILABLE_IOS(7_0);
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizershouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; (此方法在window对象在有触摸事件发生时,调用gesture recognizer的touchesBegan:withEvent:方法之前调用,如果返回 NO,则gesture recognizer不会看到此触摸事件)
- IOS开发之手势的学习
- IOS开发之手势
- iOS开发之 手势
- iOS 开发之手势
- iOS 手势的学习
- iOS开发学习之触摸事件和手势识别
- iOS开发学习之触摸事件和手势识别
- iOS开发学习之触摸事件和手势识别
- iOS开发学习之触摸事件和手势识别(转
- iOS开发学习之触摸事件和手势识别
- iOS开发学习之触摸事件和手势识别
- IOS开发之手势(UIGestureRecognizer)
- IOS开发之手势UIGestureRecognizer
- iOS开发之手势(UIGestureRecognizer)
- iOS开发之手势识别
- IOS开发之手势UIGestureRecognizer
- iOS开发之手势篇
- iOS开发之手势识别
- jump game
- android:exported
- 设计之路 -- 如何进行软件需求分析?
- 关于 android 中 postDelayed方法的讲解
- C/C学习笔记/导言
- IOS开发之手势的学习
- ACM-兄弟郊游问题
- C++运算符重载(9) - 自增和自减
- IO流总结(基础知识)
- 【菜鸟看框架】——浅谈EF框架
- nginx支持缓存302重定向后的文件到本地
- jmeter java请求
- 手机socket通信/websocket
- MVC、MVVM