swift4--为视图添加手势

手势 - 单击


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //开启图像视图的交互功能
    view.isUserInteractionEnabled = true

    //创建一个手势监测类
    let guesture = UITapGestureRecognizer(target:self,action:#selector(self.singleTap))

    //将创建的手势指定给图像视图
    view.addGestureRecognizer(guesture)
}

//绑定的事件
@objc func singleTap(){
        
}

手势 - 长按

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
        
    //开启图像视图的交互功能
    view.isUserInteractionEnabled = true

    // 创建长按手势对象
    let guesture = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPress(_ :)))
        
    // 将手势指定给长按事件
    view.addGestureRecognizer(guesture)
        
}
    
@objc func longPress(_ gusture:UILongPressGestureRecognizer)
        
{
    // 检测手势阶段
    if(gusture.state == UIGestureRecognizer.State.began)        
    {
         //要执行的代码
    }
        
}

 

手势--双击

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //开启图像视图的交互功能
    view.isUserInteractionEnabled = true

    //创建一个手势监测类
    let guesture = UITapGestureRecognizer(target:self,action:#selector(self.singleTap))

    //设置为两次单击
    guesture.numberOfTapsRequired = 2

    //设置手势为单次双击事件
    guesture.numberOfTouchesRequired = 1

    //将创建的手势指定给图像视图
    view.addGestureRecognizer(guesture)
}

//绑定的事件
@objc func doubleTap(){
        
}

手势--拖动

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //开启图像视图的交互功能
    view.isUserInteractionEnabled = true

    // 创建拖动手势对象
    let guesture = UIPanGestureRecognizer(target: self, action: #selector(self. drag(_ :)))

    //将创建的手势指定给图像视图
    view.addGestureRecognizer(guesture)
}

//绑定的事件
@objc func drag(){
     let translation : CGPoint = sender.translation(in: iconView)
     if sender.state == UIGestureRecognizer.State.recognized {
        print("recognized")
     }
     if sender.state == UIGestureRecognizer.State.began {
        print("began")
     }
     if sender.state == UIGestureRecognizer.State.changed {
        print("====== changed ======")
        print("x = \(translation.x)")
        print("y = \(translation.y)")
        print("=====================")
     }
     if sender.state == UIGestureRecognizer.State.cancelled {
        print("cancelled")
     }
     if sender.state == UIGestureRecognizer.State.ended {
        print("ended")
     }   
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 
Swift 中,如果有多个滑动手势,它们可能会产生冲突。例如,如果你在一个视图中同时添加了一个左滑手势和一个右滑手势,当用户向左或向右滑动时,系统无法确定应该响应哪个手势。 为了解决这个问题,你可以使用UIGestureRecognizerDelegate协议来管理手势之间的冲突。下面是一些你可以使用的方法: 1. shouldRecognizeSimultaneouslyWith:这个方法可以允许两个手势同时识别,从而避免冲突。你可以在你的手势识别器的委托方法中实现它,例如: ```swift func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } ``` 2. shouldRequireFailure:这个方法可以让一个手势等待另一个手势失败之后再触发。例如,如果你想让一个长按手势等待一个短按手势失败之后再触发,可以这样写: ```swift func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool { if gestureRecognizer is UILongPressGestureRecognizer && otherGestureRecognizer is UITapGestureRecognizer { return true } return false } ``` 3. shouldReceive:这个方法可以让你决定是否应该响应手势。例如,如果你想让一个视图在用户使用两个手指拖动时响应手势,可以这样写: ```swift func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { if gestureRecognizer is UIPanGestureRecognizer && touch.view == myView { return touch.numberOfTouches == 2 } return true } ``` 通过实现上述方法,你可以很好地处理多个滑动手势之间的冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值