• iOS-UIControls介绍


    iOS-UIControls类介绍

    UIControl的继承关系

    UIControl是 UIKit中UISwitch(开关)、UIButton(按钮)、UISegmentedControl(分段控件)、UISlider(滑块)、UITextField(文本字段控件)、UIPageControl(分页控件)等控件的父类。同时UIControl也是UIView的子类,当然它也是UIResponse的子类。

    下面是UIControl的关系图

    UIControl的作用

    • 从上面的关系图中,我们可以看到,UIControl是UIView的子类,因此我们可以像编写UIView一样编写控件,可以调用addSubview:等方法。

    • 同时他也是UIResponse的子类,也是一个响应者。当对屏幕触发一个点击事件,事件通过响应链传到UIContol的子类上。此时将触发以下事件:

      1. UIResponder父类中触发手势方法(如touchBegan:withEvent)
      2. UIControl对UIResponse中的手势方法进行封装,转换成一个简单的事件。通过指定的事件处理机制,调用对应的方法。

      因此,简单的理解就是,UIControl把复杂的触摸事件封装成了简单的易于使用的控件事件。例如通过UIControl对象处理后,按下按钮的事件就被封装成一个控件事件,而不用去判断触摸屏幕的整个操作过程。
      例如按钮的单击事件:UIControlEventTouchUpInside

    UIControl-Tracking属性介绍

    查看UIControl的声明文件,发现有一个属性不太理解,这里特别来说明一下:

    @property(nonatomic,readonly,getter=isTracking) BOOL tracking;
    
    **解释**
    A Boolean value that indicates whether the receiver is currently tracking touches related to an event. (read-only)
    The value is YES if the receiver is tracking touches; otherwiseNO.
    
    **我的理解**
    属性含义:track--跟踪。顾名思义就是当对手势进行跟踪时,此属性为yes。即对control控件使用pan,pinch手势时,此属性为yes。
    
    属性作用:tracking为read-only,只可以观察。用来查看control控件是否处于跟踪手势状态。

    既然tracking属性为read-only,只读属性。那么,我们通过什么来控制跟踪状态,我们又通过什么来对pan,pinch手势进行响应呢?

    在声明文件tracking下方,有这4个方法,我们可以通过这4个方法来响应手势。

    - (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
    - (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
    - (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
    - (void)cancelTrackingWithEvent:(UIEvent *)event;

    UIControl自定义控件

    自定义滑动进度条按钮,用到了tracking跟踪属性,也触发了一个事件消息。

    代码比较简单,我在这个不具体说明了。下面是效果图:

    代码地址:

    http://download.csdn.net/detail/daiyibo123/9158095

    转载地址

    http://blog.csdn.net/ryantang03/article/details/7754597

    http://blog.csdn.net/iukey/article/details/7300412

  • 相关阅读:
    MyBatis入门(一)—— 入门案例
    Spring Boot统一异常处理方案示例
    Centos7 安装 ActiveMq
    在 CentOS7 上安装 zookeeper-3.5.2 服务
    使用Homebrew安装Git与Github在idea中的配置
    iReport(模版) 与Jasper(数据填充)生成pdf文档
    SSH下shiro的基本使用
    FastJson的忽略字段和格式日期用法
    Quartz —— 任务调度框架
    POI操作Excel
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026868.html
Copyright © 2020-2023  润新知