美文网首页iOS开发-属性含义与用法
iOS· UIGestureRecognizer 与UITouc

iOS· UIGestureRecognizer 与UITouc

作者: 小码僧 | 来源:发表于2018-08-30 15:34 被阅读47次

1. 回顾:添加手势的步骤

  • 初始化时为某视图添加手势及事件
  • 实现事件方法
  • 设置手势范围
1.1 初始化时添加手势及事件
[self.view addGestureRecognizer:({
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClickAction)];
        tap.delegate = self;
        tap;
    })];
1.2 实现方法事件
- (void)tapClickAction{
    //...
}
1.3 设置手势范围 -- 在UIGestureRecognizerDelegate代理中实现
  • UIGestureRecognizer方案
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
        if ([gestureRecognizer locationInView:self.view].y>CGRectGetMaxY(self.topMenuView.bounds)&&[gestureRecognizer locationInView:self.view].y<self.functionalView.y) {
            return YES;
        }
}
  • UITouch方案
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
        if ([touch locationInView:self.view].y>CGRectGetMaxY(self.topMenuView.bounds)&&[touch locationInView:self.view].y<self.functionalView.y) {
            return YES;
        }
}

2. 两种类的区别?

UIGestureRecognizer 与UITouch 都有一个 locationInView: 方法。

2.1 视图背景

VC中,self.view添加了一个WKWebView,然后在网页空白除点击。

2.2 实验结果

上面的两种方案中:

  • [touch locationInView:self.view] 返回的是点击点在self.view的位置,返回类型为CGPoint,有效,是正确的点击位置。

  • [gestureRecognizer locationInView:self.view].y 返回为0,失效。

相关文章

网友评论

    本文标题:iOS· UIGestureRecognizer 与UITouc

    本文链接:https://www.haomeiwen.com/subject/pkfdwftx.html