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  运行效果

猜你喜欢

转载自my.oschina.net/u/1585857/blog/1786048