第十三章 UIGestureRecognizer and UIMenuController翻译
来源:互联网 发布:淘宝交易额多少了 编辑:程序博客网 时间:2024/06/17 18:06
A,手势事件是在应用层中处理,它在raw touch中插入识别手势事件
B,默认情况下,一旦识别到了手势,相应的touch事件就不会发送,除非设置cancelsTouchesInView为false
C,两种手势并不能并发处理,但可以在手势的delegata中(实现UIGestureRecognizerDelegate>)实现 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:.,这个多个手势就可以并发处理
D,可以在多个手势之间设置先入依赖关系,这样一个手势可以等到另外一个手势失败后才触发!
一,UIGestureRecognizer可以用于识别手势
1,使用target-action设置监听手势的对象和处理方法
2,UIGestureRecognizer如果识别到手势,相应的UIResponder不会再被处理
二,创建tap手势
UITapGestureRecognizer *doubleTapRecognizer =[[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(doubleTap:)];doubleTapRecognizer.numberOfTapsRequired = 2;[self addGestureRecognizer:doubleTapRecognizer];
此时的事件处理顺序:
touchesBegan:withEvent: -》 UIResponder
Recognized Double Tap -》 tap gesture
touchesCancelled:withEvent: -> UIResponder
当手势被触发后,所有的UIResponder都不会被发送。
三,多手势依赖
1,如果同时有tap和double tap手势,可以为这2个手势设置依赖关系
2,可以设置tap只有在double tap手势失败的时候才触发
四,UIMenuController
1,显示小菜单,该组件为全局组件,显示它的view必须是first responder
2,需要添加UIMenuItem
- (void)tap:(UIGestureRecognizer *)gr{NSLog(@"Recognized tap");CGPoint point = [gr locationInView:self];self.selectedLine = [self lineAtPoint:point];if (self.selectedLine) {// Make ourselves the target of menu item action messages[self becomeFirstResponder];// Grab the menu controllerUIMenuController *menu = [UIMenuController sharedMenuController];// Create a new "Delete" UIMenuItemUIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:@"Delete"action:@selector(deleteLine:)];menu.menuItems = @[deleteItem];// Tell the menu where it should come from and show it[menu setTargetRect:CGRectMake(point.x, point.y, 2, 2) inView:self];[menu setMenuVisible:YES animated:YES];} else {// Hide the menu if no line is selected[[UIMenuController sharedMenuController] setMenuVisible:NO animated:YES];}[self setNeedsDisplay];}
五,UILongPressGestureRecognizer 长按手势
1,内部有一个状态机,有三种状态
UIGestureRecognizerStatePossible、UIGestureRecognizerStateBegan、UIGestureRecognizerStateEnded.
2,状态改变的时候都会给它的target发送消息,target根据状态类型进行区分
3,创建长按手势
UILongPressGestureRecognizer *pressRecognizer =[[UILongPressGestureRecognizer alloc] initWithTarget:selfaction:@selector(longPress:)];[self addGestureRecognizer:pressRecognizer];
六,UIPanGestureRecognizer and Simultaneous Recognizers pan手势和并存的手势
1,在Long press的手势触发后,需要有pan的手势移动,所以需要有并存的手势事件;在手势的delegate的方法中
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizershouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)other{if (gestureRecognizer == self.moveRecognizer) {return YES;}return NO;}
2,pan手势的translationInView:可以返回移动的距离
3,手势的cancelsTouchesInView 设置为NO,可以避免手势“吃掉”touch事件
七,UIMenuController以及 UIResponderStandardEditActions
1,UIMenuController有默认的menuItem,比如copy edit等;
2,只有实现UIResponderStandardEditActions中声明的方法,相应的menuItem才会显示; UIMenuController会发送canPerformAction:withSender:判断是否需要显示
3,UIResponderStandardEditActions并没有具体的类,它是在NSObject中声明?
八,More on UIGestureRecognizer
1,本章的内容只是入门
2,手势会“吃掉”touch事件,但你也可以使用delaysTouchesBegan, delaysTouchesEnded, and cancelsTouchesInView设置
3,每个手势内部都有状态机维护状态,比如possible、began、ended、failed等, 但有些手势可能只触发一种状态
4,可以通过继承UIGestureRecognizer自定义手势
- 第十三章 UIGestureRecognizer and UIMenuController翻译
- 13 UIGestureRecognizer and UIMenuController
- iOS编程第四版第12,13章---Touch Events and UIResponder, UIGestureRecognizer and UIMenuController
- 第十九章——UIGestureRecognizer 和 UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- UIMenuController
- 第十三章 while and for Loops
- Gradle 1.12 翻译——第十三章 编写构建脚本
- 第十三章 个人渣翻译 spf13插件---surround 使用教程
- UIGestureRecognizer
- 动态库的链接和链接选项-L,-rpath-link,-rpath
- Android都到了4GB 为什么卡顿还存在?
- 带有下拉刷新和上拉加载的的ExpandableListView
- Java集合---ConcurrentHashMap原理分析
- chrome在linux下的常用命令
- 第十三章 UIGestureRecognizer and UIMenuController翻译
- 欢迎使用CSDN-markdown编辑器
- SDI编码器
- 如何通过.htaccess实现301跳转
- EL表达式jsp页面double小数点后保留两位
- JavaScript 闭包深入理解(closure)
- iOS核心动画-3
- 安卓018 Dialog & Toast & Notification & Menu
- Java程序设计总复习题