2013-04-24 3 views
0

UITableViewCell에 UIWebView가 임베드되어 있습니다.UITableViewCell에 포함 된 UIWebView의 터치 대 스크롤

웹보기 콘텐츠의 크기는 정적이며 .scrollView.scrollEnabled = NO입니다.

webview의 자바 스크립트는 touchend 이벤트에 응답합니다.

사용자가 테이블보기에서 스크롤 할 때 touchend 이벤트가 발생한다는 점을 제외하고는 모두 잘 작동합니다.

테이블보기에 canCancelContentTouches을 설정하지 않고 시도해 보았습니다.

스크롤 할 때 자바 스크립트 이벤트 발생을 중지하거나 자바 스크립트 내부에서이를 감지하는 방법이 있습니까?

답변

0

내가 찾은 해결책은 touchend 이벤트가 무시해야 함을 표시하기 위해 자바 스크립트 플래그를 설정하는 것이 었습니다 - ": shouldRecognizeSimultaneouslyWithGestureRecognizer gestureRecognizer를"또 다른 UIGestureRecognizerDelegate을 사용하고 놀아 시도 할 수 있습니다. 플래그가 설정되면 touchend 핸들러가 작동하지 않습니다.

플래그는 scrollViewWillBeginDragging:에 설정하고 scrollViewWillEndDragging:withVelocity:targetContentOffset:

설정에서 지워지고 나는이 작동하지 않습니다 두려워 간단

0
당신은 UIScrollViewDelegate를 사용할 예정

, 그것은 다음과 같은 방법이 있습니다 UIScrollViewDelegate를 추가 한 후 설정

– scrollViewDidScroll: 
– scrollViewWillBeginDragging: 
– scrollViewWillEndDragging:withVelocity:targetContentOffset: 
– scrollViewDidEndDragging:willDecelerate: 
– scrollViewShouldScrollToTop: 
– scrollViewDidScrollToTop: 
– scrollViewWillBeginDecelerating: 
– scrollViewDidEndDecelerating: 

당신의있는 UITableViewController 위임에 "자기"와 다음을 수행의 "scrollView.delegate"속성을, 테이블 뷰 컨트롤러 (이 작업을 수행 할 필요가 없을 수도 있지만 기억이 안나지만 자동으로 이미 완료되었을 수 있으며 이러한 메서드를 노출해야 함).

– scrollViewWillBeginDragging: 

-> take your webview and "yourWebview setUserInteractionEnabled:NO" 

– scrollViewWillEndDragging:withVelocity:targetContentOffset: 

-> take your webview and "yourWebview setUserInteractionEnabled:YES" 

이것은 단지 하나의 방법입니다.

+0

[self.webView stringByEvaluatingJavaScriptFromString:@"ignoreTouchEvents = false;"]로 플래그를 삭제하는 것은입니다. webview는'scrollViewWillBeginDragging :'에 앞서'touchstart' 이벤트를 얻습니다. 그리고 우리가 사용자 상호 작용을 비활성화하더라도 웹뷰는 어쨌든'touchend'를 얻을 것입니다. –

관련 문제