1. 程式人生 > 實用技巧 >Sagit.Framework For IOS 自動佈局教程:7、UIView通用事件:點選、長按、拖動、滑動。

Sagit.Framework For IOS 自動佈局教程:7、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"] width: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 事件:長按

定義:

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;

示例用法:

用法和點選基本一致。

3、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元素會跟著手勢一起動。

其它用法和上面的一致。

4、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切換事件。

等。。。特殊一點的會單獨開篇介紹。