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")
}
}
相关文章
- 事件引入和本质
- 添加了click事件不响应
- 【Vue】利用Vue绑定Html元素事件(如:click)综合示例
- (C#)ListView双击Item事件
- Delphi TListview自绘某列添加图片按钮并实现点击事件响应
- MySQL event,作业,事件调度
- jquery点击div以外的区域触发事件
- javascript事件绑定
- MFC中动态创建button及添加响应事件
- JavaScript的BOM编程,事件-第4章
- JS事件模型小结
- Ext.js双击事件
- 异步编程的本质:怎么处理异步请求(事件)与响应的关系
- 通俗解释什么是响应式编程?-响应式编程就是因为我们得“响应”这些事件而得以命名
- EXTJS 4.2 资料 控件之Grid 行编辑绑定下拉框,并点一次触发一次事件
- 主动触发input框的失去焦点事件,阻止输入法跳出
- 设置 -webkit-app-region 后无法响应鼠标点击事件的解决方式
- 美国司法部拟就雅虎被攻击事件起诉 4 人,3 人远在俄罗斯
- Jquery学习—jquery的事件
- 预防和检测如日中天?事件响应表示不服