UIControl,相信大家都很熟悉。例如,最常用的UIButton继承自UIControl。下面这篇文章介绍了ios中的UIControl,有兴趣的朋友可以一起学习。
UIEvent是UITouch的集合,负责响应IOS中的触摸事件。此外,还提到了响应链的概念。在IOS中,所有事件都有一个第一响应者,事件可以沿着响应者链向下传递。
接下来是UIControl对象
UIControl是UIView的子类,当然也是UIResponder的子类。UIControl是UIButton、UISwitch、UITextField等控件的父类。它还包含了一些属性和方法,但是它不能直接使用UIControl类,它只是定义了所有子类都需要使用的方法。
UI对象采用了新的事件处理机制,将上一节直接处理的触摸事件转化为简单的操作,使得用户可以访问UIControl,而不用担心具体的方式。当触摸事件到达UIControl对象(由responder链调度)后,在UIResponder的方法中(如touch begin:withEvent),UIControl将标准的触摸事件转换为特殊的控制事件。简单的理解就是UIControl把复杂的触摸事件封装成一个简单易用的控制事件。比如,按下按钮的事件经过UIControl对象处理后,封装成一个控件事件,不需要判断触摸屏幕的整个操作过程。
例如按钮的单击事件:UIControlEventTouchUpInside
我们需要知道的是,UIControl首先将触摸事件转化为控制事件,然后再转化为带有接收和放置的操作。我们只要写第二次转换的代码,就是把控件事件转换成有针对性的操作。
使用add target:action:for control events。
这是UIControl为指定的控件对象添加事件的一种方法,例如:
[control obj add target:recepientObj action @ selector(method)froControlEvents:UIControlEvents];
controlObj是要响应事件的控件对象;
参数receientObj是消息发送到哪里,通常是self,通常指的是实例化控件对象的控制器;
动作后面跟一个选择器,指示事件需要响应的方法。事件做什么实际上是用这个方法写的;
最后一个是事件类型,它指示要响应哪种事件。
使用的两种方式:
1.传递密码
在代码中创建一个新按钮,然后将add target:Action:for control events方法添加到button对象中,然后编写响应方法。
2.通过可视化来实现它
按住IB中的控制键,点击鼠标,将其从按钮拖动到对应的。h文件,并建立了IBAction方法。在这种方法中,可以编写事件逻辑来完成事件响应。与第一种方法相比,这种方法更直观,开发效率更高。
后面还会用到IOS中的其他控件,但大体原理是一样的。稍后,这些控件将与新知识结合使用,包括控件的自定义样式。