zoukankan      html  css  js  c++  java
  • Sagit.Framework For IOS 自动布局教程:8、UIView通用事件:点击、双击、长按、拖动、滑动。

    前言:

    前面介绍一些UI的基本用法,这节介绍一下UIView的通用事件。

    通用事件在所有的UI上都可以使用。

    1、UIView 事件:点击

    定义:

    //可以附加的点击事件 (存档在keyvalue中时,无法传参(内存地址失效),只能针对性存runtime的属性)
    typedef  void(^OnViewClick)(id view);
    #pragma mark 扩展系统事件 - 点击
    //!点击事件的间隔(单位秒s)
    -(NSInteger)clickInterval;
    //!设置点击事件的间隔(单位秒s)
    -(UIView*)clickInterval:(NSInteger)sencond;
    //!执行点击事件
    -(UIView*)click;
    //!绑定事件 event:指定事件名称,也可以是控制器名称,也可以指向其它UI的事件,如:Age.click (Age是其它UI的name)
    -(UIView*)addClick:(NSString*)event;
    //!绑定事件 并指定target
    -(UIView*)addClick:(NSString *)event target:(UIViewController*)target;
    //!绑定事件 用代码块的形式
    -(UIView*)onClick:(OnViewClick)block;
    //!移除绑定点击事件
    -(UIView*)removeClick;

    示例用法1:直接事件

    //添加UI并增加点击事件、事件中再触发另一个UI的点击
                [[[[cView addUIView:@"level4"] 154 height:154] relate:LeftTop v:435 v2:538] onClick:^(UIView* view) {
                    [winView click];
                }];

    示例用法2:触发方法

    [[STLastImageView image:@"btn_sign"] addClick:@"sign:"];
    //签到
    -(void)sign:(UIButton*)btn
    {
    。。。。。。。
    }

    示例用法3:跳转控制器。

    示例用法4:设置允许点击间隔(2秒)

    [[[STLastButton titleColor:ColorWhite] backgroundImage:@"btn_full_middle"] clickInterval:2];

    2、UIView 事件:双击

    定义:

    #pragma mark 扩展系统事件 - 双击
    //!执行双击事件
    -(UIView*)dbClick;
    //!绑定事件 event:指定事件名称,也可以是控制器名称,也可以指向其它UI的事件,如:Age.click (Age是其它UI的name)
    -(UIView*)addDbClick:(NSString*)event;
    //!绑定事件 并指定target
    -(UIView*)addDbClick:(NSString *)event target:(UIViewController*)target;
    //!绑定事件 用代码块的形式
    -(UIView*)onDbClick:(OnViewClick)block;
    //!移除绑定双击事件
    -(UIView*)removeDbClick;

    用法和单击一致。

    3、UIView 事件:长按

    定义:

    typedef  void(^OnLongPress)(id view);
    #pragma mark 扩展系统事件 - 长按
    //!执行长按事件
    -(UIView*)longPress;
    //!绑定事件 event:指定事件名称,也可以是控制器名称,也可以指向其它UI的事件,如:Age.click (Age是其它UI的name)
    -(UIView*)addLongPress:(NSString*)event;
    //!绑定事件 并指定target
    -(UIView*)addLongPress:(NSString *)event target:(UIViewController*)target;
    //!绑定事件 用代码块的形式
    -(UIView*)onLongPress:(OnLongPress)block;
    //!移除绑定长按事件
    -(UIView*)removeLongPress;

    示例用法:

     用法和点击基本一致。

    4、UIView 事件:拖动

    定义:

    typedef  void(^OnViewDrag)(id view,UIPanGestureRecognizer *recognizer);
    #pragma mark 扩展系统事件 - 拖动
    //!执行拖动事件
    -(UIView*)drag;
    //!绑定事件 event:指定事件名称,也可以是控制器名称,也可以指向其它UI的事件,如:Age.drag (Age是其它UI的name)
    -(UIView*)addDrag:(NSString*)event;
    //!绑定事件 并指定target
    -(UIView*)addDrag:(NSString *)event target:(UIViewController*)target;
    //!绑定事件 用代码块的形式
    -(UIView*)onDrag:(OnViewDrag)block;
    //!移除绑定拖动事件
    -(UIView*)removeDrag;

    示例用法:

        [sagit onDrag:^(UIView* view, UIPanGestureRecognizer *recognizer) {
          CGPoint point = [recognizer translationInView:view];
            [Sagit.MsgBox prompt:STNumString(point.x)];
        }];

    通过recognizer可以获取滑动的坐标、起始状态和结束状态。

    被拖动的UI元素会跟着手势一起动。

    其它用法和上面的一致。

    5、UIView 事件:滑动

    定义:

    typedef  void(^OnViewSlide)(id view,UISwipeGestureRecognizer *recognizer);
    #pragma
    mark 扩展系统事件 - 滑动 //!绑定事件 event:指定事件名称,也可以是控制器名称,也可以指向其它UI的事件,如:Age.drag (Age是其它UI的name) -(UIView*)addSlide:(NSString*)event; //!绑定事件 并指定target -(UIView*)addSlide:(NSString *)event target:(UIViewController*)target; //!绑定事件 用代码块的形式 -(UIView*)onSlide:(OnViewSlide)block; //!移除绑定事件 -(UIView*)removeSlide;

    示例用法:

        [sagit onSlide:^(id view, UISwipeGestureRecognizer *recognizer) {
            [Sagit.MsgBox prompt:STNumString(recognizer.direction)];
        }];

    可以获取手势滑动的方向。

    其它事件:

    其它事件是指某些UI特有的,例如:

    UILabel 的LongPressCopy 长按保存事件。

    UIImage的LongPressSave 长按保存事件。

    UISwitch的onSwitch 切换事件。

    等。。。特殊一点的会单独开篇介绍。

  • 相关阅读:
    centos 安装 py 3.0+
    ubuntu下安装多版本Python
    DRF之注册器响应器分页器
    头部随着滚动高度的变化由透明慢慢变成不透明
    悬浮滚动
    判断某天是周几
    正则限制input只能输入大于0的数字
    原生js倒计时
    从两个时间段里分别计算出有几天工作日与周末
    sublime text3连续打出1到10的标签div
  • 原文地址:https://www.cnblogs.com/cyq1162/p/13507912.html
Copyright © 2011-2022 走看看