UIScrollView内的MKMapView不会随滑动一起移动

时间:2010-10-01 05:17:51

标签: iphone cocoa-touch ios uiscrollview mkmapview

我有一个带有各种标签的详细视图,并提供有关地点(地址,电话等)的信息。提供的信息比iPhone屏幕更高,因此它们都在UIScrollView(本身在UIView中),允许您上下滑动以查看所有内容。

我在scrollview中也有一个MKMapView。当它没有附加到Interface Builder中的任何内容时,它会随着滚动视图上下移动,保持与滚动视图中其他控件的正确相对位置。您可以使用地图,缩放和平移等,并默认显示当前位置。

但是,只要我将它挂钩到IB中的MKMapView变量,mapview就不再滚动滚动视图。相反,它只是位于它最初显示的位置(视图的底部,一些地图隐藏在视图的底部下方),并且滚动视图在其后面向上和向下滚动。

这里发生了什么?我已经尝试在IB中更改了一堆mapview和scrollview的属性,但它没有任何效果。我唯一没试过的就是完全用代码创建mapview,但这似乎不是一个明显的解决方案。

编辑:很抱歉所有人都有过期的赏金。我被挂在项目的其他区域,直到现在才回到这里。我不知道它会过期。

进一步编辑:好吧,我发现了我的问题。由于我完全不知道的原因,我有

[self.view addSubview:mapView];  
viewcontoller的ViewDidLoad中的

。一旦它被连接起来,那么这行代码(显然)会使地图成为我视图的子视图,有效地将其从滚动视图中拉出来。

愚蠢的错误,抱歉浪费了你的时间(和赏金)。在我认为回答者有机会看到结果后,我会删除这个问题。

4 个答案:

答案 0 :(得分:0)

您是否在setContentSize的{​​{1}}方法中将viewDidLoad属性设置为内容的大小?

答案 1 :(得分:0)

看起来就像使用ScrollView一样,您需要在DetailView中滚动工具。

我没有使用ScrollView,而是选择了这个....

您可以使用TableView而不是ScrollView来尝试运气。

只需将所有标签和mapView放在一个视图中,然后将该视图放在TableView的标题中。

像这样:

的UITableView

- >查看

------>所有标签//在singleView内部

------> MKMApView //在视图底部

静止您可以使用地图,缩放和平移等,默认情况下它会显示您当前的位置。

希望这个替代方案可以解决你的问题.......

所有最好的

答案 2 :(得分:0)

如果挂断IB中的插座正在破坏其他工作视图,您可以尝试在运行时找到该视图:

- (UIView *) findClass:(Class) aClass inView:(UIView *) aSuperview {
    for ( UIView *view in aSuperview.subviews ) {
        if ( [view isKindOfClass: aClass] ) break;
        if ( ( view = [self findClass: aClass inView: aSuperview] ) ) break;
    }

    return view;
}

- (void) viewDidLoad {
    MkMapView   *map = [self findClass: [MkMapView class] inView: self.view];
}

答案 3 :(得分:0)

我发现了我的问题。由于我完全不知道的原因,我有

[self.view addSubview:mapView];  

在viewcontoller的ViewDidLoad中。一旦它被连接起来,那么这行代码(显然)会使地图成为我视图的子视图,有效地将其从滚动视图中拉出来。