2012-09-16 2 views
1

UIScrollView에 MKMapView가 추가되었습니다. 예상 된 기능은지도를 패닝하면지도가 움직이게되지만 UIScrollView는 스크롤하지 않을 것이라고 생각했습니다. 즉,지도를 패닝하는 경우 스크롤보기는 현재 위치에 머물러있게됩니다.MKMapView 패닝을 수행하면 부모 UIScrollView가 스크롤됩니다.

이 내 코드입니다 : 내가 YES와 NO 독점 터치 설정을 시도했습니다

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]; 

하지만 어떤 영향을 미칠 것 같지 않습니다.

지도를 패닝하면 UIScrollView가 움직이지 않도록 동작하는 방법이 있습니까? MKMapView 대신 UIScrollView 맵을 변경해 보았습니다.하지만 같은 동작을했습니다. 따라서 MKMapView에만 해당하는 것은 아닙니다.

답변

1

예상 결과가 정확합니다.지도보기를 터치 할 때 스크롤보기가 정지 된 상태로 있어야합니다. 스크롤 이벤트가 응답보기 체인에 전달되기 전에 터치 이벤트를 수신해야하므로 스크롤보기에 고정되어 있어야합니다.

빈 프로젝트에서 위의 코드를 신속하게 테스트했으며, 프레임 & 크기, iPad 크기 감지 및지도를 하위보기로 추가하는 몇 가지 변경 사항으로 예상대로 작동합니다. 스크롤보기. 예상대로 MKMapViewUIScrollView A를 추가가 사람을 도움이 경우

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 Controller를 사용하여 차이를 만들어서는 안됩니다. – DaveSB

0

작동합니다. 내 상황에서는 뷰 계층 구조가 잘못 설정되어 작동하지 않습니다.

이 발생하는 경우 문제가 어떻게 (하위 뷰를 추가 보면 즉 [self.view addSubview:mapView]을. MKMapViewUIScrollView의 계층 구조에 제대로 있는지 확인합니다. 또한

, 정말 revealapp.com 같은 검사에 뷰 계층 구조 (관련 없음)