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")

    }

}

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值