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)的更多相关文章

  1. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)

    iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...

  2. iOS 11开发教程(十三)iOS11应用编辑界面添加视图

    iOS 11开发教程(十三)iOS11应用编辑界面添加视图 在iOS中添加视图的方式有两种:一种是使用编辑界面添加视图:另一种是使用代码添加视图.以下是这两个方式的详细介绍. 1.编辑界面添加视图 使 ...

  3. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...

  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明

    为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装. 常用计算: 用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance ...

  5. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页

    初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置: $ mip i ...

  6. 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取

    公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...

  7. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

  8. Odoo 二次开发教程(二)-模块的基础构建

    注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__ ...

  9. XAF应用开发教程(二)业务对象模型之简单类型属性

    使用过ORM的朋友对这一部分理解起来会非常快,如果没有请自行补习吧:D. 不说废话,首先,我们来开发一个简单的CRM系统,CRM系统第一个信息当然是客户信息.我们只做个简单 的客户信息来了解一下XAF ...

随机推荐

  1. RPC原理

    RPC同步调用流程:(异步另说) 1)服务消费方(Client)以本地的调用方式调用远程服务. 2)客户端代理(Client Stub)接收到调用后负责将方法.参数等组装成能够进行网络传输的消息体. ...

  2. WPF复制异常问题(OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)))

    最近在维护WPF系统的时候发现的问题,刚刚开始自己的电脑都不能重现,后面写日志跟踪才发现问题的所在.问题主要是由于:1.   在程序访问剪切板的时候,有其他程序正在占用剪切板,导致自己的程序无法访问, ...

  3. 【vim】删除标记内部的文字 di[标记]

    当我开始使用 Vim 时,一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容.转到开始的标记,然后使用下面的语法: di[标记] 比如,把光标放在开始的圆括号上,使用下面的命令来删除圆括 ...

  4. 升级版updateOozie.sh

    以前的版本检测当天的Tar包,并只能选择1个Tar包进行更新代码,当天生成多个版本时需修改脚本中配置,并不方便. 升级版兼容目录下存在一个或者多个Tar包的情况: 1.单个Tar包时,直接解压缩到当前 ...

  5. 反汇编调试内核驱动 Oops提示【转】

    以下部分内容转自:https://blog.csdn.net/jiatingqiang/article/details/7481497 反汇编调试内核驱动 arm-none-linux-gnueabi ...

  6. Ubuntu/Debian apt-get 404 Not Found Package Repository Errors,无法找到包的错误

    最简单最常用的方法是,使用如下命令更新到新的版本: sudo apt-get dist-upgrade 但是这个方法有时候不一定能起作用,那么可以使用以下直接替换的命令: sudo sed -i -e ...

  7. kafka系列一、kafka安装及部署、集群搭建

    一.环境准备 操作系统:Cent OS 7 Kafka版本:kafka_2.10 Kafka官网下载:请点击 JDK版本:1.8.0_171 zookeeper-3.4.10 二.kafka安装配置 ...

  8. react之shouldComponentUpdate简单定制数据更新

    import React from 'react' class Demo extends React.Component{ constructor(props){ super(props) this. ...

  9. python的开发环境配置-Eclipse-PyDev插件安装

    安装PyDev插件的两种安装方法: 1.百度搜索PyDev 2.4.0.zip,下载后解压,得到Plugins和Feature文件夹,复制两文件夹到Eclipse目录,覆盖即可. 插件的版本要对应py ...

  10. java多线程快速入门(二)

    通过继承Thread类来实行多线程 package com.cppdy; //通过继承Thread类来实行多线程 class MyThread extends Thread{ @Override pu ...