Swift 通過touchesBegan 方法獲取用戶點擊的view,模擬連續點擊效果


 

 

一:代碼實現

   var mV:UIView!
  var flag = false

    override func viewDidLoad() {

        super.viewDidLoad()

        mV = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100 ))

        mV.backgroundColor = UIColor.red

        self.view.addSubview(mV)

    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

        for touch:AnyObject in touches{

//            方法一

//            //獲取用戶點擊的坐標

//            var point = (touch as AnyObject).location(in: self.view)

//            //將用戶點擊的點坐標,從self.view.layer轉換到mV.View.layer的點坐標

//            point = self.mV.layer.convert(point, from: self.view.layer)

//            print("point\(point)")

//            let point2 = self.mV.layer.convert(point, to: self.view.layer)

//            print("point2\(point2)")

//

//            if self.mV.layer.contains(point ){

//                print(1)

//            }

            
            //方法二

            //獲取用戶點擊的坐標

            var point = (touch as AnyObject).location(in: self.view)

            //返回在圖層層次中包含point的view.layer的最遠子代,即獲取到用戶點擊的View的layer

            let layer = view.layer.hitTest(point)

            if layer == mV.layer{

                //模擬連續點擊效果

                let t:UITouch = touch  as! UITouch

                let i = t.tapCount

                if t.tapCount >= 2{

                    flag = true

                }
                if flag{
                    print(i)
                }
            }
        }
        flag = false
    }

 

二:效果顯示

 


免責聲明!

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



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