当前位置: 移动技术网 > 移动技术>移动开发>IOS > 深入浅析IOS中UIControl

深入浅析IOS中UIControl

2019年07月24日  | 移动技术网移动技术  | 我要评论

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中其他控件,但大致原理都是一样的,后面会结合新的知识来使用这些控件,包括对控件的自定义样式等。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网