iOS 靠近底部的button响应touchdown事件会延迟

新手上路,请多包涵

项目中要做一个类似微信语音聊天的功能,布局和微信的一样,底部一个UIView上面放了一个UIButton,添加了touchdown事件开始录音,可是点击靠近底部的位置响应会有延迟,靠上一点的位置会立刻响应,希望各位大神帮忙解答一下,谢谢!

阅读 3.9k
2 个回答

这个问题我处理过,延迟是因为屏幕底部有系统的“上滑出现控制中心”的这个手势,所以就要至少一个时间区间来检测到底是点击还是滑动,也就会造成延迟。

解决方案就是自定义button,然后重写-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event,这个方法是立即响应的。

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    BOOL inside = [super pointInside: point withEvent: event];
    
    if (inside && !self.isHighlighted && event.type == UIEventTypeTouches)
    {
        self.highlighted = YES;
        
        //这里用block也可以,把事件传递出去就好。
        if (_hightlightTarget && [_hightlightTarget respondsToSelector:_hightlightAction]) {
            [_hightlightTarget performSelector:_hightlightAction withObject:self];
        }
    }
    return inside;
}

对于其他的滑动手势造成的延迟应该是同样的解决思路。

_hightlightTarget和_hightlightAction是怎么获取的?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题