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

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM