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

Swift 通过touchesBegan 方法获取用户点击的view,模拟连续点击效果[通俗易懂]一:代码实现varmV:UIView! varflag=falseoverridefuncviewDidLoad(){super.viewDidLoad()mV=UIView(frame:CGRect(x:100,y:100,width:100,height:100…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

 

一:代码实现

   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,模拟连续点击效果[通俗易懂]

 

转载于:https://www.cnblogs.com/chenxiaopao/p/9107999.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164182.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【通信系统仿真设计】基于MATLAB的直接序列扩频通信系统仿真

    【通信系统仿真设计】基于MATLAB的直接序列扩频通信系统仿真直接扩频序列调制是用速率很高的伪噪声码序列与信息码序列模二相加(波形相乘)后得到复合码序列,用复合码序列去控制载波相位,从而获得直接扩频序列信号的。直接扩频通信具有低截获概率、抗干扰能力强以及易于实现码分多址等优点,在抗干扰通信及民用移动通信中都得到了广泛的应用。

    2022年6月3日
    45
  • Jboss 安全和优化

    Jboss 安全和优化

    2022年2月21日
    41
  • 一个java文件如何放两个public class 类「建议收藏」

    一个java文件如何放两个public class 类「建议收藏」publicclassMain{publicstaticvoidmain(String[]args){System.out.println(“HelloWorld!”);}publicclassTest1{}//正确}publicclassTest2{}//错误classTest3{}//正确////

    2022年5月22日
    51
  • Java数组循环_java遍历object数组

    Java数组循环_java遍历object数组数组:一组具有相同数据类型的集合(容器)1.数组声明格式:数据类型[]数组名=new数据类型[长度];数组长度一旦确定无法更改。数组里的数据必须是相同类型或自动向上转型后兼容的类型2.数组初始化1)静态初始化例:int[]i={1,2,3,4,’a’};Float[]f={1,2,3,4.0f};2)非静态初始化例:String[]str=newString[3…

    2022年9月19日
    1
  • Android蓝牙开发(二)之蓝牙配对和蓝牙连接

    Android蓝牙开发(二)之蓝牙配对和蓝牙连接上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接1.蓝牙配对搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认…

    2022年6月29日
    113
  • Ajax面试问题_我是面试官,该问什么?

    Ajax面试问题_我是面试官,该问什么?Ajax是什么?Ajax是指一种创建交互式网页应用的网页开发技术,全称是asychronousjavascriptandxml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新。Ajax应用程序的优势在于:1.通过异步模式,提升了用户体验2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用3.Ajax引擎在…

    2022年8月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号