解决手势冲突的方法之一
来源:互联网 发布:农行贵金属交易软件 编辑:程序博客网 时间:2024/05/12 07:55
手势的3个混淆属性
/**
* 本节介绍tap的3个弄不太林清并且容易混淆的属性:
cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded
* (0)首先要知道的是
1.这3个属性是作用于GestureRecognizers(手势识别)与触摸事件之间联系的属性。实际应用中好像很少会把它们放到一起,大多都只是运用手势识别,所以这3个属性应该很少会用到。
2.对于触摸事件,window只会有一个控件来接收touch。这个控件是首先接触到touch的并且重写了触摸事件方法(一个即可)的控件
3.手势识别和触摸事件是两个独立的事,只是可以通过这3个属性互相影响,不要混淆。
* (1)在默认情况下(即这3个属性都处于默认值的情况下),如果触摸window,首先由window上最先符合条件的控件(该控件记为hit-test view)接收到该touch并触发触摸事件touchesBegan。同时如果某个控件的手势识别器接收到了该touch,就会进行识别。手势识别成功之后发送触摸事件touchesCancelled给hit-testview,hit-test view不再响应touch。
* (2)cancelsTouchesInView:
默认为YES,这种情况下当手势识别器识别到touch之后,会发送touchesCancelled给hit-testview以取消hit-test view对touch的响应,这个时候只有手势识别器响应touch。
当设置成NO时,手势识别器识别到touch之后不会发送touchesCancelled给hit-test,这个时候手势识别器和hit-test view均响应touch。
* (3)delaysTouchesBegan:
默认是NO,这种情况下当发生一个touch时,手势识别器先捕捉到到touch,然后发给hit-testview,两者各自做出响应。如果设置为YES,手势识别器在识别的过程中(注意是识别过程),不会将touch发给hit-test view,即hit-testview不会有任何触摸事件。只有在识别失败之后才会将touch发给hit-testview,这种情况下hit-test view的响应会延迟约0.15ms。
* (4)delaysTouchesEnded:
默认为YES。这种情况下发生一个touch时,在手势识别成功后,发送给touchesCancelled消息给hit-testview,手势识别失败时,会延迟大概0.15ms,期间没有接收到别的touch才会发送touchesEnded。如果设置为NO,则不会延迟,即会立即发送touchesEnded以结束当前触摸。
*/
一、手势和tableView点击冲突
/** 单击事件 */ UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickAction)];<span style="color:#ff0000;"> tap.cancelsTouchesInView = NO;</span> [self.view addGestureRecognizer:tap];#pragma mark tapGestureRecgnizerdelegate 解决手势冲突- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ if ([otherGestureRecognizer.view isKindOfClass:[UITableView class]]){ return YES; } return NO;}
- 解决手势冲突的方法之一
- 解决ViewFlipper的OnClick方法与手势冲突的方法
- 手势的代理方法(解决了 手势和点击cell 的冲突)
- android父子控件手势冲突的解决
- 解决viewflipper 与scrollview的手势冲突
- 解决手势冲突问题
- ios解决手势冲突
- tabView的手势冲突问题解决方法
- TableView和手势冲突解决
- iOS手势冲突相关解决
- 解决 UITableViewCell的点击事件和手势的冲突问题
- 解决 cell的点击事件和触摸手势的冲突
- 解决手势与按钮的点击的冲突
- 解决UITapGestureRecognizer手势与UITableView的点击事件的冲突
- 自定义ScrollView,以解决viewflipper 与scrollview的手势冲突
- 解决触控点击事件和手势的冲突
- 解决UIScrollView滚动和子视图手势冲突的方案
- 解决触控点击事件和手势的冲突
- java.rmi.server.ExportException: Port already in use: 1099的解决办法
- TCP/IP协议
- nginx 获取远程地址
- HDU 2955 Robberies(01背包)
- BitTorrent Sync的原理介绍
- 解决手势冲突的方法之一
- hdu1160(最长下降子序列+排序)
- ScrollView中嵌入ListView,GridView冲突的解决(让ListView全显示出来)
- spring boot入门(一)
- java 生成22位UUID 改造
- HDU 小数化分数 1717
- FTP 字体不识别 svg/woff/woff2字体 404错误
- 网盘关闭后,可以用NAS+蒲公英路由搭建私有云
- C语言中memset函数详解