Swift - 触摸事件响应机制(UiView事件传递)
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")
}
}
相关文章
- 事件引入和本质
- C++多线程同步技巧(二) ---事件
- 事件回滚 rollback
- layui实际应用中批量button点击事件的正确添加及处理方式
- 科技云报道:事件响应,安全能力的关键一环
- 《基于事件流的高效模式匹配》论文中文版
- Vue—事件修饰符
- 华为快应用中如何实现同时传递事件对象和自定义参数
- vue中bus.$on事件被多次绑定
- Jquery 事件冒泡、元素的默认行为的阻止、获取事件类型、触发事件
- 终端设备和网络事件“自动化响应”到底有多么棘手?
- SwiftUI NavigationLink内实现Button按钮独立响应事件(经典教程)
- 鸿蒙开发之如何响应Button点击事件(HarmonyOS鸿蒙开发基础知识)
- 解决jQuery ajax动态新增节点无法触发点击事件的问题
- android学习之4种点击事件的响应方式
- cocos2d_x_03_经常使用类的使用_事件_画图
- 号外:数据中心跳大海事件
- Vue学习第14天——vue自定义事件及详细代码演示
- Swift - 触摸事件响应机制(UiView事件传递)
- android studio 添加按钮点击事件的三种方法