博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 之 手势
阅读量:6876 次
发布时间:2019-06-26

本文共 900 字,大约阅读时间需要 3 分钟。

  手势操作,有一个总的抽象类UIGestureRecognizer,用于检测设备的所有手势。其下有多个子类:

  •   拍击UITapGestureRecognizer (任意次数的拍击) 
  •     向里或向外捏UIPinchGestureRecognizer (用于缩放)  
  •     摇动或者拖拽UIPanGestureRecognizer  
  •     擦碰UISwipeGestureRecognizer (以任意方向)  
  •     旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
  •     长按UILongPressGestureRecognizer 

  里面有个规则,同一个视图的一种手势,只能注册一个,如果注册多个,则只有一个生效。但是子视图可以再注册同样的手势,子视图注册手势后,点击子视图后,父视图的手势将不再响应,点击子视图时,子视图自己的手势替换了父视图的同类的手势。但是,父视图的手势在其它未注册同类视图的地方还是生效的。

  上面的结论是有特殊情况的,TableView等事件是没有替换之说的。

  通过下面的delegate来判断是否需要往下传递。如果返回YES,就往下传递。

   

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{    // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件    // 但是这个地方,我觉得没有任何影响,可以去掉    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {        return NO;    }    return  YES;}

 

  这是手势delegate里面注册的事件

 

转载于:https://www.cnblogs.com/SimonGao/p/5144222.html

你可能感兴趣的文章
字节流数据的写出(输出)和读取(输入)
查看>>
OO第四阶段总结
查看>>
javascript总结02
查看>>
创建windows服务
查看>>
KSQL日期字段访问
查看>>
HTML5 入门基础
查看>>
Laravel 中的 Many-To-Many
查看>>
Codeforces 371C Hamburgers(二分基础题)
查看>>
Page Layout里的javascript (jquery)不执行
查看>>
JS中的发布订阅模式
查看>>
springmvc自定义视图
查看>>
MFC串口的编程 mscomm控件与SerialPort类
查看>>
NSThread基础使用
查看>>
Codeforces Round #287 (Div. 2) ABCDE
查看>>
【转载】读懂IL代码就这么简单(二)
查看>>
09-JS的事件流的概念(重点)
查看>>
有关inline-block
查看>>
文献随笔(九)
查看>>
git相关
查看>>
加入大型的js文件如jQuery文件,Eclipse会报错
查看>>