2011-11-15 114 views
2

我有一個UIImageView裏面的UIView。當有人試圖拖動圖像視圖時,圖像視圖應該跟隨該人的手指。以下是UIView類的代碼。即使rect包含點,CGRectContainsPoint()也不會返回TRUE?

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { 

CGPoint touchPoint = [touch locationInView:self]; 


    if (CGRectContainsPoint(self.thumb.frame, touchPoint)) 

     self.thumb.center = CGPointMake(touchPoint.x, self.thumb.center.y); 

return YES; 

}

當我開始通過放置在ImageView的我的手指,並試圖將其移動跟蹤,沒有任何反應。從NSLogging中,我發現if語句從未滿足。

但是,當我開始在imageView之外跟蹤並將手指拖動到imageView時,圖像視圖將隨後跟隨我的手指。

爲什麼當我的手指在圖像視圖上啓動時,CGRectContainsPoint()不起作用?

+0

'self.thumb'是'self'的直接子視圖嗎? –

回答

2
CGPoint touchPoint = [touch locationInView:self.view]; 

self不是視圖(通常),它是一個視圖控制器。

請注意,也假設self.view是self.thumb的超級視圖。如果不是,更一般地說,您可以使用:

CGPoint touchPoint = [touch locationInView:[self.thumb superview]]; 
+0

但在這種情況下,self是UIView。 (self.view沒有編譯)。 – Mahir

+0

和圖像視圖已經是UIView的子視圖,所以[self.thumb superview]也沒有做任何事情... – Mahir

0

touch是如何定義的? 我一直在使用以下(在標準touchesBegan或touchesMoved內),儘管self是一個ViewController。

UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0]; 
+0

我真的想出了問題:我有userInteractionEnabled設置爲YES,它不允許觸摸事件到達視圖。對不起,我想刪除這篇文章,但我一定忽略了它。 – Mahir

+0

@Mahir對於哪個對象,您將'userInteractionEnabled'設置爲'NO'? – Jeeter

+0

@馬希爾對不起,我的意思是'是':) – Jeeter

相關問題