鍍金池/ 問答/C  iOS/ iOS 靠近底部的button響應touchdown事件會延遲

iOS 靠近底部的button響應touchdown事件會延遲

項目中要做一個類似微信語音聊天的功能,布局和微信的一樣,底部一個UIView上面放了一個UIButton,添加了touchdown事件開始錄音,可是點擊靠近底部的位置響應會有延遲,靠上一點的位置會立刻響應,希望各位大神幫忙解答一下,謝謝!

回答
編輯回答
貓小柒

_hightlightTarget和_hightlightAction是怎么獲取的?

2017年3月15日 01:21
編輯回答
安于心

這個問題我處理過,延遲是因為屏幕底部有系統(tǒng)的“上滑出現(xiàn)控制中心”的這個手勢,所以就要至少一個時間區(qū)間來檢測到底是點擊還是滑動,也就會造成延遲。

解決方案就是自定義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;
}

對于其他的滑動手勢造成的延遲應該是同樣的解決思路。

2018年4月19日 03:41