2014-06-27 42 views
1

這是一個問題,但問題出現之前,問題是解決方案看起來像以前一樣工作,或者出現了另一個問題。如何啓用觸摸事件對於UIView下的MapView(iOS8/Swift)

我有一個MapView,並在它上面我放置了一個不透明的UIView,充當用戶的指示器。這已經在界面生成器中完成,因此沒有手動放置控件或類似的東西。我希望UIView不會阻止用戶與MapView的交互,例如雙擊縮放,平移等。我已經嘗試了現有的解決方案,即取消UIView的界面生成器中的「User Interaction Enabled」框。這沒有奏效。

我該如何解決這個問題?

如果事實證明iOS8/XCode 6不影響此解決方案,我將發佈代碼。

代碼:https://github.com/ChrisChares/swift-alarmGithub回購,請注意,這不是我的代碼,但它反映了這裏顯示的問題。轉到MapViewController界面。

+0

你確定它叫做「啓用手勢識別器」嗎? –

+0

我的意思是「用戶交互已啓用」,感謝您的注意。 – user3784622

+0

我沒有看到Xcode 6或iOS 8會在這裏改變任何東西的理由;也許你可以發佈一個產生這種行爲的最小例子? –

回答

0

解決方案:我想通了,這可能是Xcode 6中的潛在故障,或者Apple有意更改了選項面板中的某些邏輯。

如前所述,切換「啓用用戶交互」框不能解決問題。

然而,這樣使用的代碼呢,簡單地使用:

targetView.userInteractionEnabled =假 ,你會發現的MapView正確地從UIView的註冊風格。

0

如何覆蓋這個UIView的hittest方法,並返回nil?我目前無法使用ios8 sim來測試,所以這只是一個猜測。

+0

你指的是這個嗎? - (UIView *)hitTest:(CGPoint)指向事件:(UIEvent *)event' – user3784622

+0

是的,也可能覆蓋這可能有​​助於: - (BOOL)pointInside:(CGPoint)指向事件:(UIEvent *)事件。 – Rychu