zoukankan      html  css  js  c++  java
  • iOS中文API之UIResponder介绍

      该UIResponder类定义了响应和处理事件的对象接口。它是UIView和UIApplication的超类(UIWindow)。这些类的实例有时被称为响应者对象,简单地说就是响应者。

      通常有2种事件类型,触摸事件和移动事件。

      处理触摸事件的主要方法

      1.touchesBegan:withEvent:

      2.touchesMoved:withEvent:

      3.touchesEnded:withEvent:

      4.touchesCancelled:withEvent:

    这些方法的参数与触摸它们的事件相关联,开始触摸以及触摸位置的改变都会发生触摸事件。因此iOS允许在多点触摸中响应者分别追踪和处理触摸。只要手指触摸屏幕,滑动,从屏幕离开,都会产生一个UIEvent对象,事件包括UITouch对象

      处理移动事件的主要方法

      1.motionBegan:withEvent:

      2.motionEnded:withEvent:

      3.motionCancelled:withEvent:

    另外,canPerformAction:withSender: 方法允许响应程序来验证用户界面中的命令,而 undoManager 属性返回最近的在响应链中NSUndoManager 对象。

    UIEventType结构体定义了事件类型。

    typedef NS_ENUM(NSInteger, UIEventType) {
    
    
        UIEventTypeTouches,
    
    
        UIEventTypeMotion,
    
    
        UIEventTypeRemoteControl,
    
    
    #ifndef SDK_HIDE_TIDE
    
    
        UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0),
    
    
    #endif
    
    
    };

      

      管理响应者链

      - (nullable UIResponder*)nextResponder
      返回当前接收者的下一个响应者,如果没有返回nil。让响应链中下一个对象处理事件。
      UIResponder类默认会返回nil,并不会自动存储或设置下一个响应者。因此它的子类必须重写此方法以设置下一个响应者。下图是响应者链传递顺序
      
       - (BOOL)isFirstResponder
      判断接收者是否为第一响应者。返回YES则该消息接收者为第一响应者,反之不是第一响应者。
      
      - (BOOL)becomeFirstResponder
      通知接收者在其窗口中它即将成为第一响应者。默认返回YES。
     
      - (BOOL)resignFirstResponder
      解除当前接收者为第一响应者。
     
      - (BOOL)canResignFirstResponder
      判断接收者是否可以解除第一响应者。返回yes为可以,反之不可以解除。
     
      管理输入视图
      @property (nullable, nonatomic, readonly, strong) __kindof UIView *inputView
      当接收者成为第一响应者时显示的自定义视图。此属性通常用于提供一个视图以更换 UITextField 和 UITextView 对象提供的系统键盘。它为只读属性。当接收者成为第一响应者时该视图自动呈现,同样解除第一响应者时该视图应该自动消失。
     
      @property (nullable, nonatomic, readonly, strong) UIInputViewController *inputViewController
      同上。
     
      - (void)reloadInputViews
      当接收者为第一响应者时更新输入视图或子视图。
     
       响应触摸事件

      - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event

      当开始触摸屏幕是发生。touches为事件触摸的UITouch实例的集合。event是引起事件的对象。

      

      - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event

      当一根或多根手指在屏幕中移动时发生

      - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event

      当一根或多根手指在屏幕中离开时发生

      - (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event

      触摸取消时发生(内存吃紧)

  • 相关阅读:
    这个博客的由来
    PLSQL Developer 不能连接 oracle 12c 64位 的解决办法 for win 64
    Netflix 是如何推荐电影的
    Hadoop中国技术峰会引发Hadoop 2.0风暴
    JS如何导出Div的内容为图片
    jquery如何获取标签本生的文本内容,不获取本身子级元素及子级元素的内容
    superagent抓取gb2312网页出来是十六进制的解决办法
    一些常见html css遇到的问题
    es6 三行代码数组去重
    es6中的 Set、Map 和 WeakMap
  • 原文地址:https://www.cnblogs.com/salam/p/5052760.html
Copyright © 2011-2022 走看看