import UIKit

class FatherView: UIView {

override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {

print("Detect Touch Event")

if (self.hidden == false) && (alpha > 0) {

for subview in subviews {

if CGRectContainsPoint(subview.frame, point) {

if subview.isKindOfClass(ChildView1) {

print("view 1")

return subview

}

if subview.isKindOfClass(ChildView2) {

print("view 2")

return subview

}

}

}

}

return nil

}

}

import UIKit

class ChildView1: UIView {}

import UIKit

class ChildView2: UIView {}

import UIKit

class ViewController: UIViewController {

let father = FatherView()

let child1 = ChildView1()

let child2 = ChildView2()

let child3 = ChildView2()

override func viewDidLoad() {

super.viewDidLoad()

father.frame = CGRectMake(0, 0, 100, 100)

child1.frame = CGRectMake(20, 20, 20, 20)

child2.frame = CGRectMake(120, 120, 120, 120)

child3.frame = CGRectMake(200, 200, 120, 120)

//        father.clipsToBounds = true

father.backgroundColor = UIColor.grayColor()

child1.backgroundColor = UIColor.redColor()

child2.backgroundColor = UIColor.blueColor()

child3.backgroundColor = UIColor.greenColor()

view.addSubview(father)

father.addSubview(child1)

father.addSubview(child2)

father.addSubview(child3)

child1.addGestureRecognizer(

UITapGestureRecognizer(target: self, action: #selector(touchTest1)))

child2.addGestureRecognizer(

UITapGestureRecognizer(target: self, action: #selector(touchTest2)))

child3.addGestureRecognizer(

UITapGestureRecognizer(target: self, action: #selector(touchTest3)))

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

}

func touchTest1() {

print("test 1\n")

}

func touchTest2() {

print("test 2\n")

}

func touchTest3() {

print("test 3\n")

}

}

转载于:https://www.cnblogs.com/gongyuhonglou/p/10311533.html

Swift - 触摸事件响应机制(UiView事件传递)相关推荐

  1. Anroid View事件响应机制和ViewGroup的事件响应分发机制

    注:低版本的源码内容比高版本的源码简单,分析起来方便,但是高版本源码更为严密. View的事件响应机制 涉及2个方法dispatchTouchEvent和onTouchEvent 1.View的dis ...

  2. java的响应机制_JAVA事件响应机制

    JAVA事件响应机制 1,先自定义一个事件 public class MyEvent extends java.util.EventObject{ public MyEvent(Object sour ...

  3. Winform3、事件触发机制学习:事件的注册和定义和参数含义

    Winform3.事件触发机制学习:事件的注册和定义 在一个Form窗体中拖个按钮,双击后系统自动生成代码: // 定义事件,一般在Form.cs文件 // 默认事件是有命名规范的,控件命_事件名_个 ...

  4. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  5. android gridview 按钮事件处理,Android TV gridview 的按键事件响应巧变 事件分发机制...

    在gridview点击事件之后,打log看了下, 看到gridview的onclick事件响应的竟然排在onkeyup之后,这造成100~200ms的延迟啊, 后来换了在其它响应事件里面截取,但是在o ...

  6. 理解点击屏幕的事件响应---对UIView的hitTest: withEvent: 方法的理解

    要理解这两个方法.先了解一下用户触摸屏幕后的事件传递过程. 当用户点击屏幕后,UIApplication 先响应事件,然后传递给UIWindow.如果window可以响应.就开始遍历window的su ...

  7. java中的事件派发机制_事件派发器模式

    在项目开发中,会遇到如下情形:我们自己的服务订阅.接收来自消息队列或者客户端的事件和请求,基于不同的事件采取对应的行动,这种情况下适合应用派发器模式. 主要模块 XXXEventDispatcher类 ...

  8. Android 的触摸反馈以及事件分发机制

    在Android系统中,当你点击App某个按钮从你按下到抬起到底发生了什么? 要想解释这个问题首先需要了解Android的几个事件类型. Android 的事件类型分为以下四种: 1.MotionEv ...

  9. Android 系统(199)---Android事件分发机制详解

    Android事件分发机制详解 前言 Android事件分发机制是Android开发者必须了解的基础 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全.思路不清晰.无源码分析. ...

最新文章

  1. VTK:网格之SubdivisionDemo
  2. java 保存inputstream_java如何将一个InputStream写入文件啊?
  3. keepalived实现nginx的高可用(双主模型)
  4. 【CodeForces - 1131F 】Asya And Kittens(并查集,思维)
  5. 试述hadoop生态系统以及每个部分的具体功能_Hadoop在大数据分析中的意义和作用...
  6. C++安全方向(三):3.7 使用openssl_evp接口完成SHA3和国密SM3
  7. 【已验证】帝国cms 里 栏目列表模板获取同级栏目
  8. [转载] 晓说——第23期:大师照亮八十年代
  9. 使用51单片机驱动航模无刷电机
  10. flv怎么转换成mp4格式
  11. 蓝牙配对连接HCI log学习
  12. 腾讯不缺少梦想,但是缺算法与数据管理
  13. 高性能服务器架构拓扑图,topology: 开源、易扩展、方便集成的在线绘图(微服务架构图、网络拓扑图、流程图等)工具...
  14. php设置北京时间(时区)
  15. 185. 部门工资前三高的所有员工(重要)
  16. 迅捷pdf在线转换html,迅捷PDF在线转换器在线pdf转换jpg步骤方法分享
  17. rest接口案例_REST和平:微服务与现实案例中的整体
  18. 深度剖析:PS中的3大类调色功能。
  19. java 获取一天的起始时间和结束时间
  20. 更改公众号名称对用户关注的影响

热门文章

  1. Exynos1080处理器性能与功耗究竟怎么样?
  2. 抖音店播 就是我们说的商家自播品牌自播
  3. 各年龄段都是怎么提加薪的?
  4. 为什么要与下属建立良好的人际关系?
  5. 在C语言中,SetConsoleTextAttribute(参数1,参数2)是设置控制台窗口字体颜色和背景颜色的函数。GetStdHandle(参数)函数用于获得句柄
  6. IntelliJ IDEA 中无法下载Maven仓库源代码jar包到本地
  7. python将时间戳转化为标准时间格式的方法
  8. sql tempdb清理_SQL Server 2019中的内存优化的TempDB元数据
  9. sql limit 子句_具有并行性SQL Server TOP子句性能问题
  10. selenium (二)