Swift 通过touchesBegan 方法获取用户点击的view,模拟连续点击效果

Posted 小炮陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
    }

 

二:效果显示

 

以上是关于Swift 通过touchesBegan 方法获取用户点击的view,模拟连续点击效果的主要内容,如果未能解决你的问题,请参考以下文章

触发 UIButton 时如何获取 touchesBegan 坐标?

Swift:Spritekit 中的多个场景,从第二个和第一个场景的不同 Sprite 节点类型调用 touchesBegan

touchesBegan Swift 2 自定义 SpriteKit 节点

iOS ViewController点击空白处收起键盘

静态 tableView 中的 touchesBegan 未被调用

Spritekit 通过 touchesBegan 暂停和恢复 SKSpriteNode 的动作