Sagit.Framework For IOS 自動佈局教程:7、UIView通用事件:點選、長按、拖動、滑動。
阿新 • • 發佈:2020-08-15
前言:
前面介紹一些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切換事件。
等。。。特殊一點的會單獨開篇介紹。