• iOS


    前言

    	NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView
    	@available(iOS 2.0, *)		 public class UIControl : UIView
    
    • UIControl 从字面翻译成为控制器,可以触发事件,达到和用户进行交互。

    1、UIControl 的创建

    • Objective-C

      	// 实例化 UIControl 对象
      	UIControl *control = [[UIControl alloc] initWithFrame:CGRectMake(self.view.bounds.size.width/2 - 100, 100, 200, 100)];
      	    
      	control.backgroundColor = [UIColor redColor];
      	    
      	[self.view addSubview:control];
      	    
      	// 添加/删除触发事件
      	/*
      		- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
      		- (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;
      		 
      		(id)target:                        响应对象,就是触发了 control 的某个事件后响应谁的方法
      		(SEL)action:                       触发某个事件后响应 target 的哪个方法
      		(UIControlEvents)controlEvents:    触发 control 的哪个事件
      			    
      			UIControlEventTouchDown              // 按下
      			UIControlEventTouchDownRepeat        // 双击,连续按下2次
      			UIControlEventTouchDragInside        // 内部拖动,不松手就触发事件,一直触发
      			UIControlEventTouchDragOutside       // 向外拖出,不松手就触发事件,一直触发
      			UIControlEventTouchDragEnter
      			UIControlEventTouchDragExit          // 向外拖出,不松手就触发事件,只触发一次
      			UIControlEventTouchUpInside          // 单击
      			UIControlEventTouchUpOutside         // 向外拖出,松手后触发事件
      			UIControlEventTouchCancel
      			 
      			UIControlEventValueChanged           // 数值改变,sliders, etc.
      			 
      			UIControlEventEditingDidBegin        // 开始编辑,UITextField
      			UIControlEventEditingChanged         // 编辑中
      			UIControlEventEditingDidEnd          // 结束编辑
      			UIControlEventEditingDidEndOnExit    // 结束编辑,'return key' ending editing
      			 
      			UIControlEventAllTouchEvents         // 所有事件,for touch events
      			UIControlEventAllEditingEvents       // 所有编辑事件,for UITextField
      			UIControlEventApplicationReserved    // range available for application use
      			UIControlEventSystemReserved         // range reserved for internal framework use
      			UIControlEventAllEvents
      	 */
      		
      	// 添加触发事件
      	[control addTarget:self action:@selector(controlClick:) forControlEvents:UIControlEventTouchUpInside];
      	
      	// 一个控件可以添加多个事件
      	[control addTarget:self action:@selector(controlClickOther:) forControlEvents:UIControlEventTouchDragOutside];
      	
      	// 删除添加的事件
      	[control removeTarget:self action:@selector(controlClickOther:) forControlEvents:UIControlEventTouchDragOutside];
      
    • Swift

      	// 实例化 UIControl 对象
      	let control:UIControl = UIControl(frame: CGRectMake(self.view.bounds.size.width/2 - 100, 100, 200, 100))
      	    
      	control.backgroundColor = UIColor.redColor()
      	    
      	self.view.addSubview(control)
      	    
      	// 添加/删除触发事件
      	/*
      		public func addTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: UIControlEvents)
      		public func removeTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: UIControlEvents)
      		 
      		target:         响应对象,就是触发了 control 的某个事件后响应谁的方法
      		action:         触发某个事件后响应 target 的哪个方法
      		controlEvents:  触发 control 的哪个事件
          
      			TouchDown               	// 按下
      			TouchDownRepeat          	// 双击,连续按下2次
      			TouchDragInside         	// 内部拖动,不松手就触发事件,一直触发
      			TouchDragOutside         	// 向外拖出,不松手就触发事件,一直触发
      			TouchDragEnter 
      			TouchDragExit            	// 向外拖出,不松手就触发事件,只触发一次
      			TouchUpInside            	// 单击
      			TouchUpOutside           	// 向外拖出,松手后触发事件
      			TouchCancel 
      			 
      			ValueChanged             	// 数值改变,sliders, etc.
      			 
      			EditingDidBegin         	// 开始编辑,UITextField
      			EditingChanged           	// 编辑中
      			EditingDidEnd            	// 结束编辑
      			EditingDidEndOnExit     	// 结束编辑,'return key' ending editing
      			 
      			AllTouchEvents           	// 所有事件,for touch events
      			AllEditingEvents        	// 所有编辑事件,for UITextField
      			ApplicationReserved     	// range available for application use
      			SystemReserved           	// range reserved for internal framework use
      			AllEvents 
      	 */
      	 
      	// 添加触发事件
      	control.addTarget(self, action: #selector(UiControl.controlClick(_:)), forControlEvents: .TouchUpInside)
      	
      	// 一个控件可以添加多个事件
      	control.addTarget(self, action: #selector(UiControl.controlClickOther(_:)), forControlEvents: .TouchDragOutside)
      	
      	// 删除添加的事件
      	control.removeTarget(self, action: #selector(UiControl.controlClickOther(_:)), forControlEvents: .TouchDragOutside)
      

    2、自定义点击触发事件处理

    • Objective-C

      	// 控件触发事件处理,一般响应方法都会有一个参数,没有也可以,该参数一般是触发的对象
      	- (void)controlClick: (UIControl *)control {
      	
      	}
      
      	- (void)controlClickOther: (UIControl *)control {
          	
      	}
      
    • Swift

      	// 控件触发事件处理,一般响应方法都会有一个参数,没有也可以,该参数一般是触发的对象
      	func controlClick(control:UIControl) {
      		
      	}
      	    
      	func controlClickOther(control:UIControl) {
      	
      	}
      
  • 相关阅读:
    springboot mybatis-plus 多数据源
    怎样建网站?
    哪些软件外包公司为什么不赚钱?
    初高中英语 牛津书虫全套系列 英汉双语读物系列1-6级 音频+文本网盘下载【收藏】
    英语零基础直达六级水平-英语学习全能套装视频完整版【收藏】
    重构:改善既有代码的设计(第2版)(pdf,epub,azw3,mobi)[收藏]
    彻底关闭浏览器的弹出广告或通知(Chrome+Firefox )
    《读者》杂志38年合集 (1981-2018)电子版【收藏】
    怎样在知乎赚钱?(知乎好物)
    《故事会》(2010-2019)全年合集pdf版 [收藏]
  • 原文地址:https://www.cnblogs.com/QianChia/p/5754473.html
Copyright © 2020-2023  润新知