UIScrollView scrollToTop在iPhone中未被调用
我有一个通用的应用程序,代码是一样的。我有一个UIScrollView,其中scrollToTop可以在iPad上运行,但不能在iPhone上运行。我对此感到非常沮丧 我知道有类似的帖子,但事实并非如此。在此之前,我在iPad和iPhone上都有滚动功能。知道要找什么吗 代码的结构是这样的。我有一个叫做a的主VC,然后有一个叫做B的VC,还有一个叫做C的VC,它有一个UIScrollView。我添加了C作为B的子视图控制器。然后B作为A的孩子VC。现在C上的scroll视图没有scrollToTop工作 代理scrollViewShouldScrollToTop也仅在iPad中使用,而在iPhone中不使用。请看一看您提到的问题。我刚才才加上 编辑 我没有自己编写的原始代码,但应该是这样的:UIScrollView scrollToTop在iPhone中未被调用,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我有一个通用的应用程序,代码是一样的。我有一个UIScrollView,其中scrollToTop可以在iPad上运行,但不能在iPhone上运行。我对此感到非常沮丧 我知道有类似的帖子,但事实并非如此。在此之前,我在iPad和iPhone上都有滚动功能。知道要找什么吗 代码的结构是这样的。我有一个叫做a的主VC,然后有一个叫做B的VC,还有一个叫做C的VC,它有一个UIScrollView。我添加了C作为B的子视图控制器。然后B作为A的孩子VC。现在C上的scroll视图没有scrollToT
-(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];
}
}
}
}
-(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];
}
}
}
你可以这样称呼它:
[self cleanUp:self.view];
您可能还需要该例程的更严格的变体(有时您可能在scrollView或类似的东西中有一个tableView):
如果可能,请在此处粘贴添加子视图代码。看起来问题在于scrollview所在的视图隐藏在其他视图后面。尝试更改添加子视图的顺序。或者您也可以尝试使用bringSubviewtoFront属性将scrollview设置在顶部
如果有帮助,请告诉我。我刚刚采用了@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];
}
}
或无评论:
+ (void)globalDisableScrollToTop:(UIView *)_view;
{
if ([_view isKindOfClass:[UIScrollView class]])
((UIScrollView *)_view).scrollsToTop = NO;
for (UIView *view in _view.subviews)
[self globalDisableScrollToTop:view];
}
它现在修复了所有子视图,可以作为静态方法(根滚动视图类的)实现。可能重复@DavidRönnqvist ys我已经在上面提到过了,我已经读过了