2013-03-21 422 views
1

有沒有辦法確保任何包含超過一定移動量的敲擊被丟棄?就這一點而言,作爲水龍頭的重要性可能涉及手指的大量滑動。我想通過使用touchesBegan :, touchesMoved:等來處理不同的「點按和移動」。iOS設置移動手勢識別器的移動容差

+0

'UITapGestureRecognizer'有這個內置的,什麼是失敗? – Fogmeister 2014-05-28 15:25:38

+0

您是否在說'UITapGestureRecognizer'允許您設置公差作爲輕敲? – AbleArcher 2014-06-01 21:16:57

+0

據我所知,它具有內置的容差。無論是新聞的長度還是距離的移動。離開我的頭頂我不記得它是什麼,但我可能會嘗試看看我能否解決問題。 – Fogmeister 2014-06-02 05:38:15

回答

0

可能不是您正在尋找的答案。但我已經解決了這個問題,而是通過常規觸摸順序自己來做。對於這個工作,你也希望有self.multipleTouchEnabled = NO

@interface myView(){ 
    CGPoint _touchStartPoint; 
} 
@end 

@implementation myView 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    _touchStartPoint = [[touches anyObject] locationInView:self]; 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    [self checkDistance: [[touches anyObject] locationInView:self]]; 
} 


-(void)checkDistance:(CGPoint)p{ 

    static CGFloat dX; 
    dX = p.x - _touchStartPoint.x; 

    static CGFloat dY; 
    dY = p.y - _touchStartPoint.y; 

    static CGFloat dist; 
    dist = sqrt(dX*dX + dY*dY); 

    /* movement of less than 10 pixels */ 
    if(dist < 10){ 
     [self tap]; 
    } 
} 

-(void)tap{ 
    /* do something with your tap*/ 
} 


@end 
+0

更好的做法是將此功能構建到自定義手勢識別器中。請參閱WWDC 2012:構建高級手勢識別器。 – olynoise 2014-05-23 20:02:07