2012-09-16 51 views
1

我有一個MKMapView添加到UIScrollView。我認爲預期的功能是平移地圖會導致地圖移動,但它的父級UIScrollView不會滾動。即如果您正在平移地圖,則滾動視圖將保持在當前位置。MKMapView平移導致父級UIScrollView滾動

這是我的代碼:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.width, self.height)]; 
    [scrollView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 
    [self.view addSubview:scrollView]; 

    double mapHeight = 200; 
    if([AppDelegate isRunningOniPad]) 
     mapHeight = 400; 

    map = [[MKMapView alloc] initWithFrame:CGRectMake(0, 200, self.width, mapHeight)]; 
    [map setExclusiveTouch:NO]; 
    [scrollView map]; 

我試圖獨佔觸摸設置爲YES和NO來,但它似乎沒有任何效果。

有沒有辦法讓行爲工作,以便平移地圖將停止移動UIScrollView?我試圖將地圖更改爲UIScrollView而不是MKMapView,但它具有相同的行爲 - 所以我懷疑這是MKMapView特定的。

回答

1

預期的結果是正確的,當觸摸地圖視圖時滾動視圖應該保持靜止,因爲它應該在它們被傳遞到滾動視圖的響應者鏈之前接收到觸摸事件。

我已經在空項目中快速測試了上述代碼,並且按照預期的方式工作,並創建了大小爲&的大小,iPad大小檢測以及將地圖添加爲子視圖的子視圖滾動視圖。

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; 
[scrollView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 
// Make the content size large to allow scroll view to move 
[scrollView setContentSize:CGSizeMake(1000, 2000)]; 
[self.view addSubview:scrollView]; 

double mapHeight = 200; 
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    mapHeight = 400; 
} 

MKMapView *map = [[MKMapView alloc] initWithFrame:CGRectMake(0, 200, self.view.bounds.size.width, mapHeight)]; 
[map setExclusiveTouch:NO]; 
[scrollView addSubview:map]; 
+0

感謝您的建議,我也創建了幾個演示項目,我看到了正確的行爲 - 就像您說的那樣。並用你在viewDidLoad中發佈的代碼替換爲一個空類。然而,在我的項目中仍然發生同樣的情況......但是同樣的類在其他項目中工作正常,所以我真的很困惑SED。 –

+0

據我所見,它與視圖在標籤視圖控制器或導航控制器內部無關。它的行爲相同,如果它沒有這些添加。 –

+0

項目中是否存在禁用用戶與MKMapView交互的任何地方?因爲這會阻止地圖視圖檢測到的觸摸&傳遞給滾動視圖。使用Tab/Navigation控制器不應該有所作爲,因爲scroll&map視圖是它們的子視圖。 – DaveSB

0

在情況下,它可以幫助任何人,

添加MKMapViewUIScrollView應該正常工作。在我的情況下,它不起作用,因爲我的視圖層次結構設置不正確。

如果您有任何問題,看你如何添加子視圖(即[self.view addSubview:mapView]。確保MKMapView是正確的UIScrollView的層次結構。

另外,我很喜歡revealapp.com來檢查查看層次結構(不,我沒有與他們聯繫;)