iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)
iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)
2.使用代码添加按钮实现的响应
使用代码添加的按钮,实现响应需要使用到addTarget(_:action:for:)方法,其语法形式如下:
func addTarget(_ target: AnyObject?, action: Selector, for controlEvents: UIControlEvents)
其中,参数说明如下:
- target:表示目标对象。它是动作消息的发送方。
- action:表示选择器,用来识别动作消息。它不可以为空。
- controlEvents:表示控件事件。在iOS中有19种控件事件,如表2-4所示。
表2-4 控件事件
控件事件 |
解释 |
touchDown |
单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候 |
touchDownRepeat |
多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。 |
touchDragInside |
当一次触摸在控件窗口内拖动时。 |
touchDragOutside |
当一次触摸在控件窗口之外拖动时。 |
touchDragEnter |
当一次触摸从控件窗口之外拖动到内部时。 |
touchDragExit |
当一次触摸从控件窗口内部拖动到外部时。 |
touchUpInside |
所有在控件之内触摸抬起事件。 |
touchUpOutside |
所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。 |
touchCancel |
所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。 |
valueChanged |
当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。开发者可以配置滑块控件何时发送通知 |
editingDidBegin |
当文本控件中开始编辑时发送通知。 |
editingChanged |
当文本控件中的文本被改变时发送通知。 |
editingDidEnd |
当文本控件中编辑结束时发送通知。 |
editingDidEndOnExit |
当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。 |
allTouchEvents |
通知所有触摸事件。 |
allEditingEvents |
通知所有关于文本编辑的事件。 |
applicationReserved |
提供一系列应用程序使用的控制事件的值 |
aystemReserved |
控制事件值的范围内保留供内部使用的框架 |
AllEvents |
通知所有事件。 |
【示例2-5】以下将实现轻拍按钮,改变主视图背景颜色的功能。代码如下:
- import UIKit
- class ViewController: UIViewController {
- var isCyan:Bool=false
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- let button=UIButton(frame: CGRect(x: 90, y: 545, width: 225, height: 30))
- button.setTitle("Tap me,Change View Color", for: UIControlState()) //设置按钮的标题
- button.setTitleColor (UIColor.black, for: UIControlState()) //设置按钮标题的颜
- self.view.addSubview(button)
- button.addTarget(self, action: #selector(ViewController.tapbutton), for: UIControlEvents.touchUpInside)
- }
- @objc func tapbutton(){
- if(isCyan){
- self.view.backgroundColor=UIColor.white
- isCyan=false
- }else{
- self.view.backgroundColor=UIColor.cyan
- isCyan=true
- }
- }
- ……
- }
此时运行程序,首先会看到如图2.14的效果。当轻拍Tap me,Change View Color按钮后,主视图的背景变为青色,如图2.15所示。当再一次轻拍Tap me,Change View Color按钮,主视图的背景颜色将会变回原来的白色。
图2.14 运行效果 图2.15 运行效果
iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)的更多相关文章
- iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)
iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...
- iOS 11开发教程(十三)iOS11应用编辑界面添加视图
iOS 11开发教程(十三)iOS11应用编辑界面添加视图 在iOS中添加视图的方式有两种:一种是使用编辑界面添加视图:另一种是使用代码添加视图.以下是这两个方式的详细介绍. 1.编辑界面添加视图 使 ...
- 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装. 常用计算: 用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance ...
- MIP开发教程(二) 使用MIP-CLI工具调试MIP网页
初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置: $ mip i ...
- 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...
- Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制
一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...
- Odoo 二次开发教程(二)-模块的基础构建
注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__ ...
- XAF应用开发教程(二)业务对象模型之简单类型属性
使用过ORM的朋友对这一部分理解起来会非常快,如果没有请自行补习吧:D. 不说废话,首先,我们来开发一个简单的CRM系统,CRM系统第一个信息当然是客户信息.我们只做个简单 的客户信息来了解一下XAF ...
随机推荐
- linux 网卡
查看网卡UUID:nmcli con show 或 nmcli con list 查看网卡mac地址:nmcli dev show 或 nmcli dev list 注:sho ...
- Netty通信原理
Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,它极大的简化了TCP和UDP套接字服务器等网络编程. BIO(Blocking IO):每一个请求,一个S ...
- windows下caffe GPU版本配置
由于项目需要,所以在自己本子上配置了一下windows下GPU版本的caffe; 硬件: win10 ; gtx1070独显(计算能力6.1): 安装软件: cudnn-8. ...
- yum install oracle-validated
背景 当时心血来潮要在linux搞oracle,可一顿折腾,大约两个周时间,主要是各种环境的检测麻烦,在redhat上操作也不如centos有利. 命令 yum install oracle-vali ...
- 解决Myeclipse启动Spring Boot项目报出莫名异常
有时候明明代码.配置都是正确的,但是一启动却报出莫名其妙的异常. 主要原因是resource包下的xml.yml文件或者其他配置文件路径不正确,解决方法如下: 第一步. 第二步.如果Excluded不 ...
- 026_关于shell中的特殊变量$0 $n $* $@ $! $?
一. $n:获取当前执行的shell脚本的第N个参数,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来like${10}. $*:获取当前shell的所有参数,将所有的命令行参数 ...
- apache服务器的常用功能及设置
安装httpd yum -y install httpd 服务脚本:/etc/rc.d/init.d/httpd 脚本配置文件:/etc/sysconfig/httpd ...
- 转载:详解Java 自动装箱与拆箱的实现原理
原文:http://www.jb51.net/article/111847.htm 什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对 ...
- .netcore 整合 log4net
1.背景 前两天,曾经的一个同事咨询我,怎样将log4net以中间件的形式整合到core里边去.我不假思索的回答,这种问题应该有人做过吧,他说没有.于是,我去博客园搜了下,发现还真没有,全部都是传统. ...
- 16-client、offset、scroll系列
1.client系列 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...