《iOS 6核心开发手册(第4版)》——2.1节UIControl类
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.1节UIControl类,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.1 UIControl类
iOS 6核心开发手册(第4版)
在iOS中,控件(control)指为用户界面设计的预建对象库的成员。控件包括按钮和文本框、滑块和选项开关,以及其他Apple提供的对象。控件的作用是把用户交互转换为回调。用户触摸和操纵控件,并以此与应用程序通信。
UIControl类位于控件类树的根部。控件是UIView的子类,它们都继承它的所有用于显示和布局的属性。子类添加了一种响应机制,用于增强视图的交互性。
当用户与控件的界面交互时,所有的控件都会实现一些方式来发出消息。控件使用目标—动作模式发送消息。在定义新控件时,将告诉它谁接收消息(目标(target)),要发送什么消息(动作(action)),以及何时发送那些消息(触发条件,比如用户在其界限内完成触摸)。
2.1.1 目标—动作
目标—动作设计模式提供了一种响应用户交互的低级方式。对于UIControl类的几乎所有的子类,都会遇到这种设计模式。利用目标—动作设计模式,当特定的用户事件发生时,可以告诉控件向给定的对象发送一条消息。例如,可以指定当用户按下按钮或者调整滑块时哪个对象接收选择器。
可以提供任意一个选择器。编译器不会在运行时检查选择器,因此在准备代码时要小心谨慎地使用它。下面的代码段使用一个目标—动作对,当用户在按钮内释放一个触摸动作时,它将调用playSound:选择器。如果目标(self)没有实现该方法,应用程序将由于未定义的方法调用错误而会在运行时崩溃:
[button addTarget:self action:@selector(playSound:) forControlEvents:UIControlEventTouchUpInside];
目标—动作不像委托那样依赖于建立好的方法库。与委托以及它们必需的协议不同,目标—动作设计模式不保证playSound:实现存在。它取决于开发者确保回调引用现有的方法。谨慎的程序员将在利用给定的选择器分配目标—动作对之前测试目标。下面给出了一个示例。
if ([self respondsToSelector:@selector(playSound:)]) [button addTarget:self action:@selector(playSound:) forControlEvents:UIControlEventTouchUpInside];
标准的UIControl目标—动作对总是传递0个、1个或两个参数。这些可选的参数可以提供交互对象(比如操纵的按钮、滑块或选项开关)和响应用户输入的UIEvent对象。选择器可以选择传递其中的任何或所有参数。在前面的示例中,选择器使用一个参数,即敲击的UIButton实例。这个自引用(其中利用调用包括触发的对象)允许构建更一般的动作代码,它知道哪个控件产生回调。
2.1.2 控件的种类
系统提供的UIControl家族的成员包括按钮、分段控件、选项开关、滑块、页面控件和文本框。其中每个控件都可以在Interface Builder的Object Library中找到(按下Command+Control+Option+3组合键,或者选择View | Utilities | Show Object Library命令,并选择Controls),如图2-1所示。
图2-1 Interface Builder在Object Library中提供了其可用的控件。
从左到右依次是:标签(UILabel)、按钮(UIButton)、分段控件(UISegmentedControl)、
文本框(UITextField)、滑块(UISlider)、选项开关(UISwitch)、活动指示器和进度指示器
(UIActivityIndicatorView和UIProgressView,从技术上讲它们不是控件)、页面控件
(UIPageControl)和步进器(UIStepper)
2.1.3 控件事件
控件主要响应3类事件:基于触摸的事件、基于值的事件和基于编辑操作的事件。表2-1列出了可供控件使用的完整事件类型。
一般来讲,事件分解路线图如下:按钮使用触摸事件;几乎所有的按钮交互都是由单个UIControlEventTouchUpInside事件引起的,并且它是Interface Builder(IB)连接创建的默认事件。值事件(例如,UIControlEventValueChanged)响应用户发起的对分段控件、选项开关、滑块和页面控件的调整。用于表格的刷新控件也会触发值事件。当用户切换、滑动或敲击那些对象时,控件值会改变。UITextField对象会触发编辑事件。用户通过敲击进入(或移出)文本框或者更改文本框的内容来引发这些事件。
与所有的iOS GUI元素一样,可以在Xcode的Interface Builder屏幕中布置控件或者在代码中实例化它们。本章讨论了一些IB方法,但是更关注的是基于代码的解决方案。一旦掌握了IB布局,它将会保持相同,而不管涉及的项目是什么。可以把一个对象放入界面中,利用检查器自定义它,并把它连接到其他IB对象。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android 3D 游戏案例开发大全》——6.5节辅助界面相关类
本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.5节辅助界面相关类,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.5 辅助界面相关类Android 3D 游戏案例开发大全前一小节介绍了主控制类TXZActivity,本小节将对该游戏的辅助界面相关类进行介绍,该游戏的辅助界面主要是欢迎界面TXZWelcomeView类、菜单界面TXZMenuView类、设置界面TXZSetView类、帮助界面TXZHelpView类、选关界面TXZSelectView类,以及关于界面TXTAboutView类,下面就对这些类的开发进行详细介绍。 6.5.1 欢迎界面类TXZWelcomeView欢迎界面是进入游戏的第一个界面。此界面包括两幅图片的闪屏,闪屏的开发是为了加载资源时游戏不至于出现黑屏的情况。 (1)下面先介绍欢迎界面主体框架的开发,开发人员需要根据界面的功能来设计欢迎界面类的方法,其代码如下。 1 package com.bn.txz; //声明包 2 ……//此处省略了本类中导入类的代码,读者可以自行查阅随...
- 下一篇
《Swift 权威指南》——第6章,第6.1节函数的定义和调用
本节书摘来自异步社区《Swift 权威指南》一书中的第6章,第6.1节函数的定义和调用,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看 第6章 丰富多彩的功能——函数Swift 权威指南Swift语言为函数提供了丰富多彩的功能。但从功能上来说,Swift函数和其他语言的函数相比是非常强大的,在后面章节要介绍的方法与函数基本上一致。不过在本章先不讨论方法的细节,只介绍函数的各种功能和使用方法。 本章要点 函数的定义和调用返回多种的函数扩展参数扩展参数和内部参数使用同一个名字默认参数值可变参数常量和变量参数输入/输出参数函数类型嵌套函数 6.1 函数的定义和调用源代码文件:src/ch06/function/function/main.swift Swift并不是纯的面向对象语言,所以和C++一样,支持函数。函数和方法的区别就是函数是全局的,而方法的作用域仅限于方法内。要想引用方法,必须先要引用包含该方法的对象。也可以将方法看成是定义在类中的函数。因此,函数和方法的定义规则基础一致。在后面讲到类时再详细讨论方法的细节。本节先来讨论如何定义一个函数。 不管是什么语言,函数都必...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19