2012-07-24 95 views
0

我想根據使用這種方法的XPOS和yPos在視圖中,以獲得UIImageView(或任何我):如何根據X,Y得到的對象中的視圖(touchesMoved)

- (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event { 
    CGPoint tappedPt = [[touches anyObject] locationInView:viewIndex]; 
    int  xPos = tappedPt.x; 
    int  yPos = tappedPt.y; 

    NSLog(@"xPos %i yPos %i ", xPos, yPos); 


    // do something with xPos and yPos like add them to an array 
} 

非常感謝 !

+0

您是否想要根據這些觸點移動某些視圖? – tipycalFlow 2012-07-24 07:52:29

+0

nop我會想知道,每次我移動手指,(所以我得到的X和Y),如果有uiimageview或沒有,如果有一個uiimageview我得到它,並調整它。 – xGoPox 2012-07-24 08:10:09

回答

0

只要知道UIImageView對象的框架,就不應該很難檢查某個點是否存在於某個矩形中。

但是你有沒有嘗試過創建UIView的子類,添加一個圖像。和你的類對象,而不是添加一個UIImageView對象,並在這個UIView的子類而不是在你的UIViewController類中實現觸摸方法?

+0

但我知道有一個最簡單的方法來做到這一點,但找不到方法,這聽起來像「對象存在於這個框架」 感謝您的回覆 – xGoPox 2012-07-24 08:34:25

+0

不要忘記讓別人知道你什麼時候回憶。 :) – 2012-07-24 09:40:20

-1

您可以獲得主視圖的所有子視圖。然後確定子視圖中是否有觸點。

for(UIView *aView in [self subviews]) 
{ 
    if(CGRectContainsPoint(aView.frame, tappedPt)) 
    { 
     return aView; 
    } 
} 

但它有問題。如果許多子視圖重疊,則只能看到一個視圖。您可以修改代碼以獲取視圖數組。

+0

我試試這個,謝謝 – xGoPox 2012-07-24 08:38:42

+0

你真的應該這樣做!沒有辦法,那更容易。 'CGRectContainsPoint'已經是你要找的。爲了檢查它是否是UIImageView,只需插入'if([aview isKindOfClass:[UIImageView class])' – Fab1n 2012-07-24 09:40:23

0

我不認爲有任何東西穿過子層次結構。你可以切出一點點使用的UIView方法的工作: -

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 

,其中事件可以是零,但你還是得那個測試做的每一個孩子,並有可能它的後代。

相關問題