4

我有以下代碼:爲什麼在shouldReceiveTouch中,我的手勢識別器總是報告在同一位置輕拍?

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"%@", NSStringFromCGPoint([recognizer locationInView:self.view])); 
    ... 

每次我點擊,但是,我得到{0, -64}。無論我在哪裏點擊。我究竟做錯了什麼?

+0

也許您作爲參數傳遞的視圖不是很好的視圖。嘗試把nil作爲參數,它會給你在整個窗口中的聯繫的座標 – Joyas

回答

8

我認爲這是預期的行爲,因爲「此方法在touchesBegan:withEvent之前調用:在手勢識別器上爲新的觸摸調用」。所以,我認爲這意味着識別器不會知道它的位置。要獲取位置,請使用提供的觸摸參數代替:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"%@", NSStringFromCGPoint([touch locationInView:self.view])); 
    ... 
+1

哇,我怎麼錯過了。乾杯。 –

+0

我需要保持睜大眼睛。完美的答案,謝謝! –

相關問題