2010-03-29 32 views
3

我最近asked a question關於子視圖中的碰撞檢測,有一個完美的答案。我已經到了應用程序碰撞的最後一點,但我遇到了一個新問題。先進的方式使用UIView convertRect方法多次檢測CGRectIntersectsRect

使用convertRect很好,從子視圖獲取CGRect。我需要它稍微複雜一些,因爲它不是完全需要檢測的矩形。

我在XCode上創建了一個名爲TileViewController的抽象類。在其他屬性中,它有一個IBOutlet UIView * detectionView; 我現在有多個繼承自TileViewController的類,每個類都有多個嵌套在我使用Interface Builder創建的detectionView中的視圖。

想法是一個對象可能是某種形狀或大小,我已經編程地將這些「平鋪」檢測點放置在每個對象的底部中心。用戶可以選擇一個項目並與之交互,在這種情況下移動它。

現在該方法本身在一定程度上工作,但我不認爲它正在處理嵌套值,因爲檢測關閉。

此方法的簡化版本的工作原理 - 在檢測視圖本身上使用CGRectIntersectsRect,所以我想知道如果我循環並檢查正確的意見?

我不確定它是否在相同的視圖進行比較,但我懷疑是這樣,我在一點修改了代碼,而不是比較self.view中的值我將viewController.detectView的UIViews交互式的View.detectView但結果是一樣的。

它操縱這樣子視圖改變顏色,但他們改變顏色時,他們甚至不接觸,而在這個時候摸錯UIviews有變色

回答

1

我使用convertRect時摸索出了我的問題。

我以爲我會再次閱讀文檔(相信我我一直在閱讀它),但我錯過了以前的關鍵信息。使用convertRect:toView:要使用的視圖需要儘可能在doc提到的轉換操作的目標的方法中,但我用的視圖本身作爲目標,而不是父視圖

interactRect = [detectInteractView convertRect:[detectInteractView frame] toView:parentView]; 

這是錯誤的,我知道在這篇文章中沒有太多細節,但最終你不能使用與目標視圖相同的UIView,或者至少如果你能我不能在這裏工作!