2012-04-25 4 views
-2

UIWebView가있는 iPhone에서 실행되는 응용 프로그램이 있습니다. 이 뷰에 웹 페이지를로드하면 사용자는 페이지 맨 아래에있는 UIToolBar에 추가 한 버튼을 눌러 다음 페이지로 이동할 수 있습니다. 내가 한 일은 사용자가 페이지 절반 또는 전체를 스크롤 할 때까지이 버튼을 누르지 못하게하는 것입니다. 이것이 가능한가?사용자가 UIWebView에서 스크롤해야합니다.

답변

4

페이지의 절반 아래로 가면 웹보기의 스크롤보기에 대한 콘텐츠 오프셋을 사용할 수 있습니다.

컨트롤러에 웹 뷰의 scrollview를 참조하는 인스턴스 변수를 만듭니다. iOS 5에서는 webview.scrollView 속성을 사용하여 scrollView에 액세스 할 수 있지만 이전 버전에서는 webView의 하위 뷰를 검색해야합니다.

if([_webView respondsToSelector:@selector(scrollView)]) { 
    _webViewScrollView = _webView.scrollView; 
} 
else { 
    for (UIView *subview in _webView.subviews) {   
    if ([subview isKindOfClass: [UIScrollView class]]) { 
     _webViewScrollView = subview; 
     break; 
    } 
    } 
} 

그럼 내가

_webViewScrollView.delegate = self; 

에 관심이 컨트롤러가되도록 scrollviews 대리자를 설정하고 다음 대리자 메서드를 구현하는 것이 :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if(scrollView.contentOffset.y > someValue) { 
    // Enable Buttons 
    } 
    else { 
    // Make/Keep buttons inactive.. 
    } 
} 

다른 방법이하는 것을 일부 자바 스크립트를 사용하고 stringByEvaluatingJavaScriptFromString을 사용하여 펑키 한 것들을 수행하십시오.

0

응용 프로그램 시작시 도구 모음 단추를 비활성화하십시오. 그런 다음이 줄을 추가하여 현재 스크롤 위치를 확인하십시오.

위의 특정 위치로 페이지를 스크롤 한 후에는 도구 모음 버튼을 활성화하십시오. 스크롤 뷰 대리자 메서드를 사용할 수 있습니다.

1

사용할 수있는 UIWebView의 scrollView 재산과 유 말할 수 다시

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 

가 스크롤 종료 이벤트 및있는 UIScrollView 속성 contentOffset를 처리하기 위해 대표단 호출을 사용하는 컨텐츠 크기 (UR 웹 페이지의 실제 크기)에 대한 스크롤 위치.

관련 문제