2013-09-28 1 views
1

나는 "다음 페이지"를 배경으로 미리로드하기 위해 하나의 ViewController에 두 개의 UIWebView을 가지고 있습니다.UIWebView는 iOS 7에서 "scrollsToTop"하지 않습니다?

Xcode 5에서 프로젝트를 열면 상태 표시 줄을 탭하면 더 이상 위쪽으로 스크롤되지 않습니다.

다른 점은 iOS 7에서 제대로 작동하므로 무엇이 잘못된 것인지 잘 모릅니다. UIWebView 중 하나가 숨겨져있을 때 나는 또한 setScrollsToTop:NO ... 분명히 내가 빠진 것이있다.

아이디어가 있으십니까?

+0

코드를 여기에 게시하십시오. –

+1

그냥 인터페이스 빌더입니다 ..... –

답변

1

이 특정 문제에 대한 간단한 수업을 작성했습니다. 내 응용 프로그램에서 우리는 여러 webviews 및 scrollviews 있습니다. 이것은 모든 것을 훨씬 쉽게 만듭니다.

https://gist.github.com/hfossli/6776203

+0

흠, 재미 있습니다. –

+0

내가 솔직히 발견 한 해결책은 상위 20px "탭"영역을 듣고 "스크롤"기능으로 무엇이든 스크롤하여 예를 들어 애니메이션 세트로 설정했습니다. 그것은 꽤 아니지만 그것은 작동합니다. - 다음 번에이 문제와 관련하여 솔루션을 확인해 보겠습니다. –

+0

그게 흥미로운 접근법입니다 :) – hfossli

0

사용이 범주 :

의 UIView + LogViewHierarchy.h

#import <UIKit/UIKit.h> 

@interface UIView (LogViewHierarchy) 

-(void) logViewHierarchy; 

@end 

의 UIView + LogViewHierarchy.m

#import "UIView+LogViewHierarchy.h" 

@implementation UIView (LogViewHierarchy) 


-(void) logViewHierarchy 
{ 

    NSLog(@"%@%@", NSStringFromClass(self.class), NSStringFromCGRect(self.frame)); 
    [self logSubviews:self depth:1]; 
} 

-(void) logSubviews:(UIView*)view depth:(NSInteger)depth 
{ 
    for (UIView *subview in view.subviews) { 
     if ([subview isKindOfClass:[UIScrollView class]]) { 
      NSLog(@"%@%@%@ - scrollsToTop: %@", [self paddingString:depth], NSStringFromClass(subview.class), NSStringFromCGRect(subview.frame), ((UIScrollView*)subview).scrollsToTop ? @"YES" : @"NO"); 
     } else { 
      NSLog(@"%@%@%@", [self paddingString:depth], NSStringFromClass(subview.class), NSStringFromCGRect(subview.frame)); 
     } 
     [self logSubviews:subview depth:depth+1]; 
    } 
} 

-(NSString*) paddingString:(NSInteger)depth 
{ 
    return [@"" stringByPaddingToLength:depth*2 withString:@" " startingAtIndex:0]; 
} 


@end 

그런 다음 앱의 루트 뷰 컨트롤러를 찾아 추가

-(void) viewDidAppear:(BOOL)animated 
{ 
    [self.view logViewHierarchy]; 
} 

당신은 모든 UIScrollViews과 scrollsToTop 속성을 볼 수 있습니다. scrollsToTop == YES이있는 UIScrollView가 하나만있는 것처럼 출력물을 만들면 scrollsToTop 제스처가 정상적으로 작동합니다.

내 경우에 logViewHierarchy은 모든 스크롤보기에 scrollsToTop = NO이 있다고보고했으며 사용자가 명시 적으로 YES으로 설정했기 때문에 이유를 알지 못했습니다. 내 프로젝트에 this UIScrollView category을 남겨 뒀다는 것이 밝혀졌으며, 모든 UIScrollViews에서 일부 메소드가 오버로드되었습니다. 프로젝트에서 해당 카테고리를 제거하면 logViewHierarchy에서 올바른 결과를 얻을 수있었습니다. 그런 다음 코드 하나로 놀아서 scrollsToTop = YES 한 개만 얻습니다.

관련 문제