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.'
答案 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;;
}
我希望这有用。