一:代碼實現
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 }
二:效果顯示