深入浅析IOS中UIControl

 更新时间:2015年10月19日 10:38:47   投稿:mrr  
UIControl,相信大家对其并不陌生吧,比如平常最常用的UIButton就是继承自UIControl的。下面通过本篇文章给大家介绍ios中UIControl,感兴趣的朋友一起学习吧

UIEvent是一系列UITouch的集合,在IOS中负责响应触摸事件。另外还提到了响应者链的概念,在IOS中,所有事件有一个最先响应者,事件可以沿着响应者链向下传递。

接下来是UIControl对象

UIControl是UIView的子类,当然也是UIResponder的子类。UIControl是诸如UIButton、UISwitch、UITextField等控件的父类,它本身也包含了一些属性和方法,但是不能直接使用UIControl类,它只是定义了子类都需要使用的方法。

UIControl对象采用了一种新的事件处理机制,将前一节直接处理的触摸事件转换成简单操作,这样可以无需关心用户访问控件的具体方式。触摸事件到达UIControl对象(由响应者链派遣)后,在UIResponder的方法中(如touchBegan:withEvent)中,UIControl将标准的触摸事件转换为特殊的控件事件,简单的理解就是,UIControl把复杂的触摸事件封装成了简单的易于使用的控件事件。例如通过UIControl对象处理后,按下按钮的事件就被封装成一个控件事件,而不用去判断触摸屏幕的整个操作过程。

例如按钮的单击事件:UIControlEventTouchUpInside

我们所需要知道的是UIControl首先将触摸事件转换为控件事件,再转换为带接收放的操作。我们只要编写第二次转换的代码,就是将控件事件转换为有目标的操作。

使用addTarget:action:forControlEvents

这是UIControl的一个方法,为指定的控件对象添加事件,例如:

[controlObj addTarget:recepientObj action @selector(method) froControlEvents : UIControlEvents];

controlObj是要响应事件的控件对象;

参数receientObj是要把消息发送到哪里,一般是self,通常指实例化控件对象的控制器;

action后面是一个选择器,表示该事件需要响应的方法,事件做什么其实就写在这个方法里面;

最后一个是事件类型,表示响应什么样的事件。

使用的两种方式:

1.通过代码

在代码中新建一个按钮,然后为按钮对象添加addTarget:action:forControlEvents方法,然后编写响应方法即可。

2.通过可视化实现

在IB中按住control键,点击鼠标从按钮拖动到对应的.h文件中,就建立了一个IBAction方法,在此方法中编写事件逻辑便可完成事件响应,用这种方法相比第一种来说更直观,开发效率也更高。

后续还会使用IOS中其他控件,但大致原理都是一样的,后面会结合新的知识来使用这些控件,包括对控件的自定义样式等。

您可能感兴趣的文章:

相关文章

  • iOS开发之统计Xcode工程的代码行数

    iOS开发之统计Xcode工程的代码行数

    这篇文章主要给大家介绍了在iOS开发中,如果想要统计Xcode工程的代码行数该如何实现,文章给出了详细的方法和示例代码,对大家的理解和学习很有帮助,本文中还分享了统计java文件和xml文件的代码,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • iOS中使用MD5加密字符串

    iOS中使用MD5加密字符串

    本文主要给大家讲解的是在IOS中MD5的加密方式,及详细使用方法。有需要的小伙伴可以参考下
    2016-06-06
  • iOS实现手动和自动屏幕旋转

    iOS实现手动和自动屏幕旋转

    这篇文章主要为大家详细介绍了iOS实现手动和自动屏幕旋转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • iOS实现动态元素的引导图效果

    iOS实现动态元素的引导图效果

    这篇文章给大家介绍了iOS实现动态元素的引导图效果的步骤,文章给出了示例代码介绍的很详细,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • 详解iOS11关于导航栏问题

    详解iOS11关于导航栏问题

    本篇文章主要介绍了详解iOS11关于导航栏问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

    iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

    使用Storyboard做开发效率非常高,为了防止在团队中发生冲突,采取的解决办法是负责UI开发的同事最好每人维护一个Storyboard, 公用的组件使用轻量级的xib或者纯代码来实现,下面小编就给大家介绍如何使用Storyboard预览UI在不同屏幕上的运行效果,需要的朋友可以参考下
    2015-08-08
  • iOS仿新闻tab标题栏效果

    iOS仿新闻tab标题栏效果

    这篇文章主要为大家详细介绍了iOS仿新闻tab标题栏效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • iOS粒子路径移动效果 iOS实现QQ拖动效果

    iOS粒子路径移动效果 iOS实现QQ拖动效果

    这篇文章主要为大家详细介绍了iOS粒子路径移动效果,iOS实现QQ拖动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • iOS中设置网络超时时间+模拟的方法详解

    iOS中设置网络超时时间+模拟的方法详解

    这篇文章主要介绍了在iOS中设置网络超时时间+模拟的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来跟着小编一起来学习学习吧。
    2017-04-04
  • 详解Swift model 解析的两种方法

    详解Swift model 解析的两种方法

    这篇文章主要介绍了详解Swift model 解析的两种方法的相关资料,希望通过本文大家能够掌握这里的两种实现方法,需要的朋友可以参考下
    2017-09-09

最新评论