UIScrollView scrollToTop 没有被 iPhone 调用
Posted
技术标签:
【中文标题】UIScrollView scrollToTop 没有被 iPhone 调用【英文标题】:UIScrollView scrollToTop not getting called for iPhone 【发布时间】:2012-07-18 20:27:58 【问题描述】:我有一个通用的应用程序,代码是一样的。我有一个 UIScrollView,其中的 scrollToTop 可以在 iPad 上工作,但不能在 iPhone 上工作。我对此感到非常沮丧。
我知道here 发布了一个类似的帖子,但事实并非如此。在此之前,我曾经在 iPad 和 iPhone 上滚动工作。知道要寻找什么吗?
代码的结构是这样的。我有一个名为 A 的 mainVC。然后我有一个名为 B 的 VC。还有另一个名为 C 的 VC,它有一个 UIScrollView。我将 C 添加为 B 的子视图控制器。然后 B 作为 A 的子 VC。现在 C 上的滚动视图没有 scrollToTop 工作。
委托 scrollViewShouldScrollToTop 也仅在 iPad 中调用,而不在 iPhone 中调用。
【问题讨论】:
scrollToTop is not working on iPhone but it is working on iPad的可能重复 @DavidRönnqvist ys 我已经在上面提到过,我已经阅读过 【参考方案1】:查看my answer 来了解您所讨论的问题。我刚刚添加了它。
编辑
我没有自己做的原始代码,但应该是这样的:
-(void)cleanUp:(UIScrollView*)view
if([view isKindOfClass:[UIScrollView class]])
view.scrollsToTop = NO;
else
for(UIScrollView* subview in view.subviews)
if([subview isKindOfClass:[UIView class]])
[self cleanUp:subview];
你可以这样称呼它:
[self cleanUp:self.view];
您可能还需要该例程的更严格的变体(有时您可能在 scrollView 内有一个 tableView 或类似的东西):
-(void)cleanUp:(UIScrollView*)view
if([view isKindOfClass:[UIScrollView class]])
view.scrollsToTop = NO;
for(UIScrollView* subview in view.subviews)
if([subview isKindOfClass:[UIView class]])
[self cleanUp:subview];
【讨论】:
【参考方案2】:我刚刚拿了@Ariel的解决方案,做了一些改进想和大家分享一下:
+ (void)globalDisableScrollToTop:(UIView *)_view;
// Check whether we got a scroll view
if ([_view isKindOfClass:[UIScrollView class]])
// Disable scroll to top
((UIScrollView *)_view).scrollsToTop = NO;
// Iterate all subviews
for (UIView *view in _view.subviews)
// Recursive call of this method
[self globalDisableScrollToTop:view];
或者没有 cmets:
+ (void)globalDisableScrollToTop:(UIView *)_view;
if ([_view isKindOfClass:[UIScrollView class]])
((UIScrollView *)_view).scrollsToTop = NO;
for (UIView *view in _view.subviews)
[self globalDisableScrollToTop:view];
它现在修复了所有子视图,并且可以作为静态方法(您的根滚动视图类)实现。
【讨论】:
【参考方案3】:如果可能,请在此处粘贴添加子视图代码。看起来问题是存在滚动视图的视图隐藏在其他视图后面。尝试更改添加子视图的顺序。或者您也可以尝试使用bringSubviewtoFront 属性将滚动视图设置在顶部。
如果有帮助,请告诉我。
【讨论】:
以上是关于UIScrollView scrollToTop 没有被 iPhone 调用的主要内容,如果未能解决你的问题,请参考以下文章