首页 > 其他分享 >swift--触摸(UITouch)事件(点击,移动,抬起)

swift--触摸(UITouch)事件(点击,移动,抬起)

时间:2023-08-22 15:36:03浏览次数:33  
标签:touches -- UIEvent UITouch 触摸 let swift event

触摸事件:

UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁。表示触碰。UITouch对象能表明当前手指触碰的屏幕位置、状态,状态分为开始触碰、移动、离开。

具体方法介绍如下:

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

通知调用者当有一个或者多个手指触摸到了视图或者窗口时触发次方法,touches是UITouch的集合,通过uito我们可以检测触摸事件的属性,是单击还是双击,还有触摸的位置等。

2.override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)

告诉接受者一个或者多个手指在视图或者窗口上触发移动事件。默认不允许多点触摸,如果要接受多点触摸事件必须将UIVIew属性置为true。

//支持多点触摸
self.view.isMultipleTouchEnabled = true

3.override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)

当一个触摸事件结束时发出的UITouch实例对象

4.override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?)

通知接受者当系统发出取消事件的时候(如第内存消耗时的警告框)

样例代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        for touch:AnyObject in touches {
            let t:UITouch = touch as! UITouch
            //当在屏幕上连续拍动两下时,背景回复为白色
            if t.tapCount == 2
            {
                self.view.backgroundColor = UIColor.white
            }else if t.tapCount == 1
            {
                self.view.backgroundColor = UIColor.blue
            }
        }
    }
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        //获取点击的坐标位置
        for touch:AnyObject in touches {
            let t:UITouch = touch as! UITouch
            print(t.location(in: self.view))
        }
    }
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        if touches.count == 2
        {
            //获取触摸点
            let first = (touches as NSSet).allObjects[0] as! UITouch
            let second = (touches as NSSet).allObjects[1] as! UITouch
            //获取触摸点坐标
            let firstPoint = first.location(in: self.view)
            let secondPoint = second.location(in: self.view)
            //计算两点间的距离
            let deltaX = secondPoint.x - firstPoint.x
            let deltaY = secondPoint.y - firstPoint.y
            let initialDistance = sqrt(deltaX + deltaY * deltaY)
            print("两点间的距离:\(initialDistance)")
            //计算两点间的角度
            let height = secondPoint.y - firstPoint.y
            let width = firstPoint.x - secondPoint.x
            let rads = atan(height/width)
            let degrees = 180.0 * Double(rads) / .pi
            print("两点间角度:\(degrees)")
        }
    }
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
        print("event canceled!")
    }

 

作者:稻草人11223

标签:touches,--,UIEvent,UITouch,触摸,let,swift,event
From: https://blog.51cto.com/u_13188203/7190233

相关文章

  • ios开发之--使用toolbar调整item之间的间隔
    toolbar的item有很多种样式,其实经常使用的就几种,UIBarButtonSystemItemFixedSpace木棍:可以理解为固定的长度UIBarButtonSystemItemFlexibleSpace 弹簧:可以理解为弹性的长度 UIBarButtonItem有两个barbutton的格式  添加到toolbaritems=@[木棍,按钮,弹簧,按钮,木棍];木棍是固定长度......
  • java实现大文件上传示例
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • swift--添加新手引导页
    swift和oc逻辑上都是一样的,只是写法不一样,可以使用一个view,也可以使用一个viewController,两种都可以的,使用view注意初始化的时候给他一个frame,vc的话,直接在本控制器里面写控制即可! 1,创建一个vc,然后在里面初始化一个scrollview,升值contentsize为3*页面宽度,然后添加图片,最后可以实......
  • sql日期去掉-
    selectreplace(d_day,'-','') fromfc_sr_day_sale_ad_order;语法REPLACE(''string_replace1'',''string_replace2'',''string_replace3'')参数''string_replace1'......
  • swift--获取window
    有时候,我们需要频繁的调用界面,然后给当前页面加一个跟视图,这个时候就需要找windown,代码如下:letrootVC=UIApplication.shared.delegateas!AppDelegaterootVC.window?.rootViewController=MainVC()这样即可!仅供参考!作者:稻草人11223......
  • swift--设置app图标和启动页面
    1,如下图:选择上图步骤1,然后选择步骤2,aapp图标,尺寸上面都有,b启动图,我这是创建好的,如果没有创建,先创建c这块需要置为空接着步骤b进入下图  选择1,点击2选择上图,可以看到3已经创建成功备注1:如下图按照步骤,找到a,然后取消选中fdsfgasfa备注2:选择启动图片资源,如下图按照上......
  • ios开发之--ZHPickView输出格式不出现 +0000
    这样写就不会输出+0000了NSDate*select=[_datePickerdate];NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init];[dateFormattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"];_resultString=[dateFormatterstringFromDate:select];输出+0000的原因是_......
  • ios开发之--从相机或相册选取图片,并带删除操作的demo
    多选图片的一个效果,如下图:附带有删除操作,比较方便!选取图片使用的是:ZYQAssetPickerController这个第三方类图片压缩用的是自己写的类别:UIImage+ImageSimple附一个demo的下载地址:https://github.com/hgl753951/changeTest.git具体代码就不上传了!可以直接从demo里面看!在此仅做记录用!作......
  • 科大讯飞AI大模型,太猛了!
    最近几个月,以ChatGPT为代表的AIGC迅速崛起,国内头部科技企业之间也掀起了百模大战,在众多的大模型当中我比较看好的一家就是:科大讯飞。我很早就通过科大讯飞老朋友,拿到了体验账号,简单体验了一下,谈谈我的具体感受吧。(我找科大讯飞星火大模型的一个朋友申请了一个专属申请链接:点击申......
  • API的幂等性设计
    一、背景    平台部分API需要保证接口的幂等性,防止业务频繁刷API导致资源浪费,或者不小心重发消息影响业务。二、解释    接口的幂等,指一个操作重复执行N次得到的结果与执行一次是相等的。比如在HTTP请求中,Get请求,得到的结果是相同的。但POST和PATCH的接口,每次请......