在缩放缩放期间UITableview崩溃

时间:2011-10-06 15:36:38

标签: uitableview uiscrollview zoom subview ios5

iOS5:在缩放缩放期间UITableview崩溃 步骤:
 1.打开桌子
 2.通过捏合手势进行缩放 在iOS5上崩溃! SIGABRT
在iOS 4.x上工作正常 可能是什么原因?

之后的信号SIGABRT
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return tableView;
}


*** Terminating app due to uncaught exception 'NSGenericException', reason: 
'The view returned from viewForZoomingInScrollView: must be a subview of the scroll view.
 It can not be the scroll view itself.'

3 个答案:

答案 0 :(得分:1)

我今天刚刚在我的测试iPad上安装了XCode 4.2和iOS5,我遇到了同样的问题。

我可以通过观察Apple名为ScrollViewSuite的示例代码来解决问题。它包含一个名为TapToZoom的应用程序,它显示了缩放缩放的正确实现(适用于iOS5)。 基本上,我只是做了三件事: 1-在视图控制器的.m文件的开头定义一个常量(在#import之后):

#define ZOOM_VIEW_TAG 100

2 - 然后,我在viewDidLoad的开头添加了一行(如果你不使用nib文件,则在loadView中添加一行,并通过编码创建视图 - 对于Apple示例)在tableView上设置标记(嵌入在scrollView中的表:

[tableView setTag:ZOOM_VIEW_TAG];

3-然后,最后,将viewForZoomingInScrollView中返回的值从之前的'return tableView'更改为:

return [scrollView viewWithTag:ZOOM_VIEW_TAG];

一旦这三个元素到位,我的缩放不仅再次起作用,而且我意识到它现在比以前更加平滑 - 这意味着我之前的实现已经在iOS4中存在缺陷。

我相信如果你遵循这些指示,你的问题应该得到解决。如果没有,请告诉我。 (从技术上讲,你可以在界面窗口中设置tableView的标签,然后去掉第一步和第二步,并给出你在步骤3中定义的标签号,但从长远来看,代码的可读性会降低 - 至少在我看来)

答案 1 :(得分:0)

错误消息实际上很有帮助。我在iOS4上运行良好的应用程序也开始在iOS 5上出现此错误。我通过向我的scrollview添加子视图(在您的情况下为tableView)然后在委托中返回该子视图来解决问题。

dummyView = [[UIView alloc] initWithFrame:tableView.bounds];
[tableView addSubview:dummyView];

...

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return dummyView;
}

答案 2 :(得分:0)

对我来说同样的错误,解决方案只是返回self.view而不是myScrollView

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
        return self.view;;
 }

我希望这有用。