【发布时间】:2012-03-09 20:40:21
【问题描述】:
在 ios5 之前,我可以像这样访问 UIWebView 的 UIScrollView 委托:
for (id subview in webView1.subviews){
if ([[subview class] isSubclassOfClass: [UIScrollView class]]) {
UIScrollView * s = (UIScrollView*)subview;
OldDelegate = s.delegate;//OldDelegate is type id
s.delegate = self;
}
}
现在,我知道这不是正确的做法,但当时(据我所知)这是唯一的做法。 iOS 5 改变了这一点,所以我尝试使用 iOS 5 的方式:
UIScrollView * s = webView.scrollView;
Olddelegate = s.delegate;
s.delegate = self;
但无论哪种方式,我都尝试这样做,我的 OldDelegate 对象的值是 0x0。保留这个委托值真的很重要,但尽我所能,我只是得到 0x0。
有什么想法吗?
我没有使用 ARC...
【问题讨论】:
-
只是一个问题,你有没有提交过这样的应用程序?我认为这是苹果公司禁止的。我想做类似的事情,但我不知道它是否会导致应用被拒绝。
-
是的,它确实获得了批准,但现在是时候更新了,我无法让它工作,所以我遇到了麻烦......
-
为什么需要保留您的代表?这证明了您构建视图层次结构的方式存在更大的问题。代表应始终声明为弱,因为保留它们没有意义。
-
根据您描述的方式,这不一定是存储委托的问题 - 您要存储的委托值是否可见或设置在中并不完全清楚第一名。您是否直接检查了 webView.scrollview.delegate 本身以查看它是否首先设置?如果它已经是 nil,那么将它存储到 Olddelegate 就会得到 nil。
标签: iphone ios5 uiwebview uiscrollview uiscrollviewdelegate