美文网首页iOS之OC深入理解iOSiOS Developer
iOS中事件处理机制——触摸、手势、控制

iOS中事件处理机制——触摸、手势、控制

作者: 猿来如此 | 来源:发表于2016-10-27 15:49 被阅读135次

响应者链

首先,想要理解事件的处理机制必须要知道iOS中响应者链,要明白事件是怎么传递的。


Snip20161027_3.png

如上图,假设我们点击viewC,系统会从顶层baseView开始寻找,发现点击事件在baseView或者其子类里;baseView的子类有viewA和viewB,然后从viewA和viewB中寻找,发现点击事件在viewB或者其子类里;viewB的子类为viewC和viewD,再从viewC和viewD中寻找,此时发现点击事件在viewC中,并且viewC没有子类,所以viewC响应并处理此点击事件,也就是hit-test view。

注意点:1.如果子视图的Frame超过父视图的Frame,那么点击子视图中超出的部分,不会触发响应时间。2.只有继承于UIResponder类的对象才能处理事件。例如: UIView、UIViewContronler、UIApplication等。

iOS常用事件处理包括:1.触摸事件;2.手势识别;3.运动事件;4.远程控制。

一、触摸事件

#pragma mark - 触摸事件
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //开始触摸时执行
}
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //手指在屏幕上移动时执行,此方法在移动过程中重复调用
}
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //触摸结束时执行
}
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //触摸意外取消时执行(例如:正在触摸时打入电话等)
}

二、手势识别

1、UITapGestureRecognizer 点按手势
2、UIPinchGestureRecognizer 捏合手势
3、UIPanGestureRecognizer 拖动手势
4、UISwipeGestureRecognizer 轻扫手势
5、UILongPressGestureRecognizer 长按手势
6、UIRotationGestureRecognizer 旋转手势

UIGestureRecognizer类中一些常用的属性、方法:
属性:

1、@property(nonatomic,readonly) UIGestureRecognizerState state;//手势状态
2、@property(nonatomic, getter=isEnabled) BOOL enabled; // default is YES.手势是否可用
3、@property(nullable, nonatomic,readonly) UIView *view;//触发手势的视图

方法:

1、- (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action ;
2、- (void)addTarget:(id)target action:(SEL)action;
3、- (void)removeTarget:(nullable id)target action:(nullable SEL)action;
4、- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;//指定一个手势需要另一个手势执行失败后才会执行(用来解决手势间的冲突)
5、- (CGPoint)locationInView:(nullable UIView*)view;//在指定视图中的相对位置
6、- (NSUInteger)numberOfTouches;//触摸点的个数
7、- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(nullable UIView*)view;//触摸点相对于指定视图的位置

三、运动事件

1、- (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event ;
2、- (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event ;
3、- (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event ;

四、远程控制

- (void)remoteControlReceivedWithEvent:(nullable UIEvent *)event;

相关文章

  • iOS 事件以及手势的处理

    iOS 事件以及手势的处理 首先引用深入浅出iOS事件机制,iOS触摸事件处理详解,详解iOS触摸事件与手势识别三...

  • 事件的处理机制和手势的操作

    事件的处理机制和手势的操作 iOS中的事件分发## 事件的分类### Touch Events(多点触摸事件) 视...

  • 一、事件分发机制:事件传递链

    这里的事件分发机制中的事件是触摸事件,ios中处理触摸事件分为两种,其一便是使用手势识别器来跟踪触摸 其二是UIV...

  • iOS中事件处理机制——触摸、手势、控制

    响应者链 首先,想要理解事件的处理机制必须要知道iOS中响应者链,要明白事件是怎么传递的。 如上图,假设我们点击v...

  • ios 事件传递和响应

    史上最详细的iOS之事件的传递和响应机制-原理篇iOS触摸事件传递响应之被忽视的手势识别器工作原理手势事件中can...

  • 《iOS事件触摸与手势》

    iOS事件触摸与手势 一、事件分发处理【由外到内】在iOS中发生触摸后,事件会加到UIApplication事件队...

  • iOS中手势的简述(面试必备)

    提供了有关iOS中手势常用到的6个方面(事件、事件处理的方法、UITouch触摸对象、事件传递、响应者链、手势识别...

  • 详解iOS触摸事件与手势识别

    iOS最常见的是触摸事件Touch Events。触摸事件除了是view来处理,还有高级的手势可以处理。所以,本文...

  • iOS触摸事件处理

    iOS触摸事件处理 主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景.一、处理机制界面响应...

  • iOS事件的响应者链

    iOS 事件响应者链 1 iOS中的事件 触摸事件 加速计事件 远程控制事件 在iOS中不是任何对象都能处理事件,...

网友评论

    本文标题:iOS中事件处理机制——触摸、手势、控制

    本文链接:https://www.haomeiwen.com/subject/oaoduttx.html