UIWebView class reference이있는 UIScrollView에있는 UIWebView를 내장 낙담 : 중요
을 : 당신은 있는 UIScrollView 객체에있는 UIWebView 또는 jQuery과 오브젝트를 포함하지 않아야합니다. 그렇게하면 두 개체에 대한 터치 이벤트가 혼합되어 잘못 처리 될 수 있으므로 예기치 않은 동작이 발생하여 이 잘못 처리 될 수 있습니다. 나는 여전히 기능을 ;-) 구현한다고 가정하지만
아이디어 1 :로 DOM을 수정하는 대신있는 UIWebView의 stringByEvaluatingJavaScriptFromString:
방법을 사용하여 자바 스크립트를 실행하는있는 UIScrollView에있는 UIWebView를 포함하지 마십시오 아래에 툴바를 추가하십시오. 필요한 경우 사용자 정의 URL 스킴을 등록하여 툴바에 푸시 된 버튼에서 콜백 objective-c 코드를 사용할 수 있습니다.
아이디어 2 : UIWebView를 UIScrollView에 포함시키지 말고 일반 UIView에 포함 시키십시오. Vignesh의 제안을 바탕으로, callback이 호출 될 때마다 contentOffset
과 contentSize
의 신장을 비교하여 위임자를 통해 webView의 내부 scrollView의 scrollViewDidScroll:
콜백을 수신 대기합니다. 그들이 동등하면, 그것은 당신이 바닥에 있다는 것을 의미합니다. 이런 일이 발생하면 툴바의 프레임에 애니메이션을 적용하여 포함 된 UIView를 "입력"하고 WebView 프레임을 "밀어"이동할 수 있습니다.
아이디어 3 : Apple 권장 사항을 무시하고 UIWebView를 UIScrollView에 포함하십시오. Vignesh의 제안을 바탕으로, callback이 호출 될 때마다 contentOffset
과 contentSize
의 신장을 비교하여 위임자를 통해 webView의 내부 scrollView의 scrollViewDidScroll:
콜백을 수신 대기합니다. 그들이 동등하면, 그것은 당신이 바닥에 있다는 것을 의미합니다. 이 문제가 발생하면 webView의 userInteractionEnabled
속성을 NO로 설정하고 webView 및 도구 모음이 포함 된 scrollView에서 YES로 설정하십시오. 스크롤이 원활하게 계속되기를 바랍니다. 물론 userInteractionEnabled
을 언제 되돌릴지를 결정하기 위해 동일한 방법으로 포함하는 스크롤 뷰를 들어야합니다.
이 아이디어의 변형은 webView의 경우 userInteractionEnabled
을 NO로 설정하는 것이지만 webView의 프레임 높이를 contentSize와 일치하도록 설정하고 이에 따라 포함하는 scrollView의 contentSize를 확대합니다.
두 변형에는 어떤 경우에는 링크를 클릭하는 등의 일을 할 수 없다는 단점이 있습니다 .- 그러나 (아마도 어쩌면 그것으로 충분할 수도 있습니다.) 적어도 첫 번째 변형에서는 너무 나쁘지 않습니다.