`

swift -> 给任意控件添加 手势(点击,拖拽等) 事件

 
阅读更多

   

   1、拍击UITapGestureRecognizer (任意次数的拍击)  
    2、向里或向外捏UIPinchGestureRecognizer (用于缩放)  
    3、摇动或者拖拽UIPanGestureRecognizer  
    4、擦碰UISwipeGestureRecognizer (一般用以左右切换滑动)  
    5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
    6、长按UILongPressGestureRecognizer 

 

    override func viewDidLoad() {
        super.viewDidLoad()
 
        var v = UIView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)); 
        
        //点击事件
        let handTap = UITapGestureRecognizer(target: self, action: #selector(funTap))
        v.addGestureRecognizer(handTap)

        //拖动事件, 任意方向
        let handDrag = UIPanGestureRecognizer(target: self, action: #selector(funDrag))
        //v.addGestureRecognizer(handDrag)
        
        //左右滑动,不可与拖动事件UIPanGestureRecognizer并存 , 默认只支持向右
        let handLeftRight = UISwipeGestureRecognizer(target: self, action: #selector(funLeftRight))
        handLeftRight.direction = .left //支持向左
        v.addGestureRecognizer(handLeftRight)
        
        self.view.addSubview(v)

    }

    func funTap(sender: UIPanGestureRecognizer){
        print("funTap_"+String(arc4random()));
    }
    func funDrag(sender: UIPanGestureRecognizer){
        var Point = sender.translation(in: self.view);//现对于起始点的移动位置
        Point = sender.location(in: self.view);//在整个self.view 中的位置
        print("funDrag_"+String(describing: Point.x)+","+String(describing:Point.y))

        if(sender.state == .began){
            print("begin: "+String(describing: Point.x)+","+String(describing:Point.y))
        }else if(sender.state == .ended){
            print("ended: "+String(describing: Point.x)+","+String(describing:Point.y))
        }else{
            print("ing: "+String(describing: Point.x)+","+String(describing:Point.y))
        }
    }
    func funLeftRight(sender: UIPanGestureRecognizer){
        print("funLeftRight_"+String(arc4random()));
    }

  

如果想获取 参数 sender:UIxxxGestureRecognizer 中的视图 信息

    func showLongPress(sender:UILongPressGestureRecognizer){

        print((sender.view as! XXX).url.text);

    }

 

** 传递 和 获取 UIButton 信息

func xxx(sender: UILongPressGestureRecognizer){
        let btn:UIButton = sender.view as! UIButton
        print(btn.tag)
}

 

 

 

** 其中 UILongPressGestureRecogizer  长按事件详解

class xxx: aaa, UIGestureRecognizerDelegate{


    //让 添加 的 长按事件 与 控件本身 的长按事件 并存,不添加不会触发 addGestureRecognizer 的长按
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true;
    }
    func longPressWeb(sender:UILongPressGestureRecognizer){
        if(sender.state == .began){
            print("long preses began")
        }else if(sender.state == .ended){
            print(" long press end")
        }
        print("you do long press");
        
    }


    override func viewDidLoad() {
        let long = UILongPressGestureRecognizer(target: self, action: #selector(longPressWeb));
        long.delegate = self
        self.view.addGestureRecognizer(long)
    }

}

 

 

 

 

分享到:
评论

相关推荐

    swift-快速对常用视图控件添加点击事件

    在Swift开发中,为视图控件添加点击事件是日常工作中常见的操作,这使得用户能够与界面进行交互。本文将详细讲解如何在Swift中为各种常用视图控件(如UIButton、UILabel、UIImageView等)快速添加点击事件。 一、...

    swift-加减号控件Swift

    在Swift编程语言中,加减号控件通常指的是可以增加或减少数值的用户界面元素,常见于电商应用的商品数量选择、评分系统等场景。这种控件由两个按钮组成,一个表示增加,另一个表示减少,中间通常显示当前的数值。...

    swift-TXCustomView图片浏览控件

    6. **用户交互**:可以添加自定义的点击事件、长按事件,为开发者提供更多的交互可能性。 7. **视图控制器集成**:可以方便地与UINavigationController或UIViewController集成,提供导航和回退功能。 8. **自定义...

    ios-swift-demo7-控件学习.zip

    在"demo7-swift控件学习"项目中,开发者可能展示了如何创建和配置按钮,以及如何响应按钮的点击事件。可能的示例包括: 1. 创建基本按钮:展示如何使用不同类型的按钮,并设置其标题和颜色。 2. 动态按钮:演示如何...

    swift-DYSegmentDemo选择滑动控件

    这需要在每个标题按钮上添加点击事件处理函数,通过这个函数来更新显示的内容。 字体颜色渐变(Font Color Gradient)是一种提高用户体验的设计,它可以使用户更清楚地感知当前所选状态。在DYSegmentDemo中,可能是...

    swift-一行代码添加文本点击事件(swfit版本)

    在Swift编程语言中,为文本添加点击事件通常是通过创建自定义的`UILabel`子类或者使用`UITapGestureRecognizer`配合`NSAttributedString`来实现的。这里我们将深入探讨如何在Swift中使用一行代码来为文本添加点击...

    swift-自定义色盘选择控件

    4. **手势识别(Gesture Recognizer)**:为了响应用户的触摸操作,我们需要添加手势识别器,如UIPanGestureRecognizer或UITapGestureRecognizer,来捕捉用户的滑动或点击行为,并根据这些行为更新颜色选择。...

    swift-ios下拉框控件

    在iOS应用开发中,Swift语言提供了丰富的UI控件来构建用户界面。"swift-ios下拉框控件"通常指的是能够实现下拉选择功能的控件,这种控件在很多场景下都非常有用,例如用户需要从预设的选项中选择一个。在iOS中,这种...

    Swift-采用Swift开发的自定义UIKit控件实现利用平移手势选择一个距离

    本篇文章将深入探讨如何使用Swift来创建一个独特的UIKit控件,该控件允许用户通过平移手势选择一个特定的距离,类似于地图上的距离区间选择组件。这个控件可以用于各种应用,如运动追踪、导航或者任何需要用户指定...

    swift-城市选择二级菜单手势滑动。

    以上是关于"swift-城市选择二级菜单手势滑动"项目的一些核心知识点,通过这个项目,开发者不仅可以学习到Swift UI控件的使用,还能深入理解手势识别、动画效果以及状态管理等iOS开发中的重要概念。在实际项目中,...

    Swift-给导航控制器添加一个全屏滑动返回的手势。类似QQ.微博的效果

    本文将详细介绍如何在Swift中为导航控制器(UINavigationController)添加一个全屏滑动返回的手势。 首先,我们需要理解手势识别(Gesture Recognizer)的概念。手势识别是iOS SDK提供的一种机制,用于检测和响应...

    swift-Maker是一个使用链式语法实现UIKit控件的Category

    Swift-Maker是一个强大的工具,专为Swift开发者设计,旨在简化UIKit控件的创建和配置过程。这个库通过链式语法的引入,极大地提高了代码的可读性和开发效率,减少了不必要的代码量。在iOS应用开发中,UIKit是核心...

    swift-TimeLimitedView-倒计时的控件

    在iOS应用开发中,UI设计和交互是至关重要的部分,其中倒计时控件是一种常见的功能,用于显示剩余时间,比如活动结束、验证码过期等场景。本篇将深入探讨如何利用Swift语言来创建一个简单易用的倒计时控件——`...

    swift-MRJCitySelect-城市选择控件

    《Swift-MRJCitySelect:打造高效的城市选择控件》 在iOS应用开发中,用户界面(UI)的交互设计是提升用户体验的关键因素之一。Swift-MRJCitySelect 是一个专为Swift开发者设计的,用于实现高效、易用的城市选择...

    swift-iOS基础控件链式编程

    , constant: CGFloat) -> NSLayoutConstraint { // 添加约束实现 } } let view = UIView() .constraint(nil, to: view.topAnchor, constant: 20) .constraint(view.leadingAnchor, to: view.leadingAnchor, ...

    swift-类似微信转发控件支持多人和单人转发

    可以使用UIView动画或者CAAnimation为控件添加动态效果,如弹出和消失的动画,以增强用户体验。 9. **响应式设计**: 控件应具备良好的适配性,能够适应不同尺寸的屏幕,确保在iPhone和iPad上都能正确显示。 10....

    swift-单项选择器控件View

    Swift中的单项选择器控件,通常被称为Picker View,是一种用户界面元素,允许用户在多个预设选项中选择一个。在iOS应用开发中,Picker View是一个非常常见且实用的组件,适用于各种场景,如日期选择、时间选择或者...

    swift-自定义下拉刷新控件

    本教程将深入讲解如何在Swift中实现一个自定义的下拉刷新控件。 首先,我们需要了解下拉刷新的基本工作原理。在iOS中,这种功能通常由UIRefreshControl类提供,它是系统内置的下拉刷新控件。然而,为了满足特定的...

    swift-封装图片轮播图支持定时轮播点击跳转添加其他控件等功能

    本项目"swift-封装图片轮播图支持定时轮播点击跳转添加其他控件等功能"就是对图片轮播组件的封装,它旨在简化开发流程,提高代码复用性,同时也增加了额外的交互特性。 首先,我们来看标题中的关键点:"封装图片...

    swift-iOS树状列表控件灵活性高可自定义样式。

    描述中提到“灵活性高,可自定义样式”,这意味着这个树状列表控件不仅能够处理不同层级的数据,还能根据设计需求调整样式,比如更改单元格的背景色、文字颜色、字体大小,甚至添加动画效果等。开发者可以通过重写`...

Global site tag (gtag.js) - Google Analytics