[ios] UIWebView에서 스크롤을 허용하지 않습니까?

나는 웹 기사를 보여야한다 UITableView 아래에 .

내가 찾은 유일한 옵션 UIWebView은 tableView 헤더에 기사를 표시하는 것 입니다.

이를 위해 webView 콘텐츠의 높이를 가져와야하고 webView에 대한 스크롤링을 비활성화해야합니다.

스크롤을 비활성화하는 두 가지 솔루션을 찾았습니다.

for (id subview in webView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).scrollEnabled=NO;

또는 JavaScript에서 :

<script type="text/javascript">
touchMove = function(event) {
    event.preventDefault();
}

첫 번째 해결책은 Apple에서 금지하고 있다고 들었지만 증거가 없습니다. 이 솔루션을 사용하면 신청이 거부됩니까? 그렇다면 거부되지 않고 두 번째 솔루션을 사용할 수 있습니까?



답변

iOS5부터 UIWebView의 scrollview에 직접 액세스 할 수 있습니다.
다음과 같이 스크롤 및 바운스를 비활성화 할 수 있습니다.

webView.scrollView.scrollEnabled = NO;
webView.scrollView.bounces = NO;


답변

이 질문은 여전히 ​​적용 가능하기 때문에 새로운 방법이 있습니다! (iOS 7.0 이상, 아마도 iOS 6도 확인되지 않음)

webView.scrollView.scrollEnabled = NO;

조심하세요 🙂


답변

웹보기 사용자 상호 작용 속성을 no ie로 간단히 설정할 수 있습니다.

webView.userInteractionEnabled = NO;

꽤 간단하고 잘 작동합니다. 감사합니다 🙂


답변

모든 iOS 버전의 경우 setScrollEnabled 대신이 코드를 사용할 수 있습니다.

for (UIView *view in webview.subviews) {
    if ([view isKindOfClass:[UIScrollView class]]) {
       UIScrollView *scrollView = (UIScrollView *)view;
       scrollView.scrollEnabled = NO;
    }
}


답변

이것을 사용하십시오 <body ontouchmove="event.preventDefault()">


답변

SWIFT 3 버전

    webView.scrollView.bounces = false
    webView.scrollView.isScrollEnabled = false


답변

나는 자바 스크립트를

<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}

최고의 솔루션입니다.

사실 :

귀하의 첫 번째 시험 또는

[[[WebView subviews] lastObject] setScrollingEnabled:NO];

문서화되지 않았기 때문에 하나 (동일한 것)가 거부되거나 추가 iOS 업데이트에서 앱이 중단 될 수 있습니다.

그리고

[[myWebView scrollView] setBounces:NO];

방법은 iOS <5에서 작동하지 않습니다.