2012-12-05 36 views
0

現在在我的幾個iOS應用程序中,我需要遞歸地獲取相鄰的視圖。我想知道我們有沒有像viewAtLocation:(CGPoint)location?或者有什麼方法可以實現它。如何獲取viewAtLocation:(CGPoint)的位置?

我已經使用了幾種方式,如C數組id matrix[row][col]與大小來決定作爲指標值的位置,並檢索所有subview然後通過循環檢查location逐一等。雖然這些工作對我來說不過這些似乎並不好或適合我。那麼我們還能擁有什麼?

+0

請您詳細說明'相鄰視圖'是什麼意思? –

+0

@Mohit_Jaiswal其實第一行描述的情況,只是我正在處理的。仍然與鄰近我的意思是接下來,前,上下。但問題並沒有太多。 – rptwsthi

+0

所以,我在可見視圖中看到的是,您有多個視圖,並且您需要/打算獲取該視圖的位置。我對嗎?那麼,如果這種情況比我認爲這不是件難事,讓我先解釋一下,然後再回到你身邊。 –

回答

3

這是最好的使用標準hitTest:withEvent將處理之類的東西忽視了一個觀點,如果它的不透明度爲0.0以下代碼將做到這一點。文檔中說,手動調用該事件時會傳入nil

對於任何使用pointInside:withEvent:擴展邊界的視圖,這也會正確運行。

+0

謝謝這就是我正在尋找的東西,但在那裏有很大的文檔.. – rptwsthi

1

你老兄

UIView *view = <Your View>; 
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
[view addGestureRecognizer:recognizer]; 
[recognizer release]; 

- (void)handleSingleTap:(UITapGestureRecognizer*)recognizer{ 

    CGPoint p = [recognizer locationInView:recognizer.view]; 
    for (UIView *v in recognizer.view.subviews) { 
     if (CGRectContainsPoint(v.frame, p)) { 
      NSLog(@"view Found with frame %@",NSStringFromCGRect(v.frame)); 
      //If your views doesn't overlap then break from here 
      break; 
     } 
    } 
} 
+0

感謝親愛的,但正如我所提到的,**「並檢索所有子視圖,然後在一個循環等逐一檢查位置。」**我已經完成並確定它的工作.. :)因此+1 .. – rptwsthi

+0

那麼如果你不想要l then,那麼我寧願使用我的預期設計定製UIButton。每個按鈕都有獨特的標籤。我可以根據標籤決定現在點擊哪個按鈕。 –

+0

檢查接受答案.. :),我們可能有其他許多任務的標籤..我們通常有。 – rptwsthi