programing

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

nasanasas 2020. 9. 6. 10:06
반응형

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에서 작동하지 않습니다.


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

나를 위해 그것을 분류


첫 번째는 Apple에서 거부합니다. 바로 오늘 아침 나에게 일어났습니다.


[[myWebView scrollView] setBounces : NO];


첫 번째 옵션은 애플이 금지 한 것이라고 생각하지 않습니다.

당신은 시도 할 수 있습니다

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

UIWebView에서 링크가 작동하지 않도록하려면 다음을 수행 할 수도 있습니다.

[myWebView setUserInteractionEnabled:NO];

그걸 써 :

[[webView scrollView] setBounces:NO];
[[webView scrollView] setScrollingEnabled:NO];

이 시도,

[(UIScrollView *)[[webView subviews] lastObject] setScrollEnabled:NO];    

I placed some UIWebViews inside a UIScrollView and it wasn't scrolling for me, unless I disable the user interaction on the webviews (even with the [[webview scrollview] setScrollEnabled:NO]). So I placed the UIWebViews inside a UIView and that worked for me but then the interactive links or divs in my HTML inside the UIWebView were not working anymore.

The only thing that worked for me is to keep the UIWebView inside the UIScrollView so the HTML interactions work but the UIScrolling does not.

I then created a custom delegate for the webviews to listen for window.open("http:/customEvent") that is called from the HTML contained in the webview. I also added a JavaScript swipe detection that will fire up my custom event.

When the webview delegate receives this, I pass a notification to a controller which then dynamically scrolls my UIScrollView. Obviously I had to build a logic to monitor and scroll to the next or previous page. Not the prettiest solution but It's working for me.


Try this in your HTML (<HEAD> tag)

<script> 
  document.ontouchmove = function(event) { event.preventDefault(); }
</script>

It will disable scrolling on your web page.

(works on any webpage, not just UIWebView)


I needed to disable scrolling because dismissing a custom keyboard really messed up scrolling with the webView. Nothing else worked and I resorted to something like this:

-(void)viewDidLoad{
  [super viewDidLoad];
  [self.webView.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
  self.webView.scrollView.showsVerticalScrollIndicator = NO;
}  

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (!CGPointEqualToPoint(self.webView.scrollView.contentOffset, CGPointZero)){
        self.contentOffset = CGPointZero;
    }
}

Is a UIWebview and a UITableView on a UIScrollview, and setting the height of the webview (and adding to the total ContentSize of the Scrollview) like what you want?


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

참고URL : https://stackoverflow.com/questions/6437911/disable-scroll-on-a-uiwebview-allowed

반응형