1

一般来说:我在 UIViewController 上有一个带有 xib 文件的自定义 UIView 作为子视图。我在控制器中以编程方式添加子视图。

在我的 UIViewController 中:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomSubView" owner:self  options:nil];
mySubView = [subviewArray objectAtIndex:0];
...
[self.view addSubview:mapView];

因为我需要在这个子视图上滚动,它上面也有一个 UIImageView,所以我决定将我的自定义 UIView 更改为 UIScrollView。

我做了以下步骤:

  • 更改了 MyCustomSubView.xib,添加了一个带有自定义类 MyCustomSubView 的 UIScrollView(和之前一样的 UIImageView)
  • 更改了我的 MyCustomSubView 类以扩展 UIScrollView
  • 更改了我的 MyViewController 以实现 UIScrollViewDelegate
  • 将 mySubView.delegate 设置为 self(控制器)
  • 实现 (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 并返回子视图的 UIImageView
  • 在 imageview 和 uiscrollview 上启用用户交互

这些是我认为的总步骤。但作为示例,未调用 viewForZoomingInScrollView 方法。我也尝试放大,但什么也没发生。

任何人的想法,可能有什么问题?

4

1 回答 1

2

简要查看UIScrollViewClass Reference page,我看到以下内容:

UIScrollView 类可以有一个必须采用 UIScrollViewDelegate 协议的委托。要使缩放和平移工作,代理必须同时实现 viewForZoomingInScrollView: 和 scrollViewDidEndZooming:withView:atScale:; 另外,最大(maximumZoomScale)和最小(minimumZoomScale)缩放比例必须不同。

您提到了实施viewForZoomingInScrollView:,但没有提到scrollViewDidEndZooming:atScale:,也没有提到设置maximumZoomScaleminimumZoomScale。尝试做这些事情,然后检查您是否仍有问题。

于 2012-07-16T17:00:09.057 回答