2013-04-02 5 views
0

지금 당장은 하나의 webview를 사용하여 내 aplicationDatadirectory의 데이터를 보여줍니다. 여기서는 모든 것이 잘 작동하고 사용자가 다음을 각각 클릭 할 때 콘텐츠가 표시됩니다. 내가 슬쩍 이벤트를 찾아이에 기초Webview 스 와이프 문제 - Appcelerator Titanium

$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 

- : 이제 내가 무엇을하고 있는가하는 것은이 같은 웹보기의 HTML에서 "touchevent"와 "하는 TouchMove를"등록 웹뷰의 온로드에 있습니다. 내가 webview (나는 이미지를 볼 수 있습니다)에 올바른 HTML을 얻을. 그러나 나는 터치 시작하고 전화를 이동할 수 없습니다. 나는 여기서 어떤 문제인지 모른다. 여기 URL을 사용하여 webview에서 데이터를 설정합니다.

지금 내가 html을 사용하여 webview에서 데이터를 설정할 때 (하나의 var에서 내 html 파일의 데이터를 사용함) 이제는 이미지를 볼 수 없지만 하나의 검은 색 테두리 (비어 있음)가 표시되지만 여기에서는 내 touchstart touchmove 이벤트도 발사됩니다. 내 슬쩍도 예상대로 작동합니다. iPhone에서이 기능을 확인하고 있습니다.

여기에 어떤 문제가 발생했는지 확인할 수 있습니까? 감사.

+0

편집 : - webview.html을 사용하는 동안 이미지를 리소스 폴더에 복사 한 다음 확인 및 스 와이프가 작동하고 있습니다. (검은 색 테두리가 나는 생각하는 이미지를 얻지 못했습니다.) 하지만 webview.url을 사용할 때 작동하지 않습니다. 어떤 제안? –

답변

0

iOS에서 스 와이프를 만들었습니다 (안드로이드가 작동 중이었습니다). 나는이 일이 이유라고 기대하지는 않았지만 그 뒤에있는 논리를 모른다. 응용 프로그램 데이터 디렉토리에서 .xhtml 파일에 액세스하고 있었고 안드로이드에서 아무 문제없이 작동했지만 iOS에서는 그렇지 않았습니다.

그냥 (내 코드에서 이름 바꾸기) .xhtml 파일을 .html로 변경하면 작동합니다. :) 희망이 동일한 것을 (또는 그의 관심사를 위해) 찾고있는 누군가를 도울 수있다

감사합니다.

1

나는 당신이 html 속성 데이터를 즉시로드 사용하고 정확하게 html 내용을 설정 한 후 코드를 사용할 수있는 경우

$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchstart", function mytouch(){Ti.App.fireEvent("touch", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 
$.webview.evalJS('document.getElementsByTagName("body")[0].addEventListener("touchmove", function mymove(){Ti.App.fireEvent("move", {X:event.touches[0].pageX,Y:event.touches[0].pageY,length:event.touches.length});}, false);'); 

를 적용 할 때이 시간에 달려 있다고 생각합니다. url을 사용하는 경우 (로컬에 있더라도 안드로이드에서는 어려울 수 있음) 페이지가로드 될 때까지 잠시 기다려야합니다. 또한 (웹보기 이벤트 load) 이벤트 리스너가 있지만 로컬 리소스에 대해 작동하지만 내가 그렇게 생각하지 않을 경우 말할 수 없습니다.

이 경우 evalJS을 사용하여 수동으로 추가하는 대신 javascript 스 니펫을 HTML 리소스 (로컬 인 경우)에 적용해야합니다.

html 속성을 통해 콘텐츠를 제공 할 때 웹보기에서 로컬 이미지 (리소스 폴더)를 사용할 수 없다는 점을 Android에 문제가 있습니다.

+0

안녕하세요, 늦게 답장을 보내 주셔서 감사합니다. 귀하의 의견을 보내 주셔서 감사합니다. 데이터로드 여부를 확인할 수 있도록로드 방법 (위에서 언급 한대로)에서 webview.evalJS를 쓰고 있습니다. 이제는 webview.html (같은 html)을 사용할 때 내 webview (touchstart 및 touchmove 이벤트가 호출 됨)를 스 와이프 할 수 있지만 webview.html 대신 webview.url을 사용하면 이러한 이벤트가 트리거되지 않습니다. 친절하게도 이것은 iOS가있는 안드로이드에만 해당되며 내 웹보기를 스 와이핑 할 수 있습니다. 어떤 제안? –

+0

나는이 파일을 제어 할 수 없으므로 이러한 이벤트를 html 파일에 수동으로 넣을 수는 없습니다. 하나의 파일 (epub 파일)을 압축 해제 한 다음 applicationdatadirectory에 html 파일을 저장 한 다음 하나씩이 파일에 액세스합니다. –

+0

로드가 잘된다는 것은 데이터를 사용할 수 있음을 의미하며 사이트가 렌더링되었음을 의미하지는 않습니다. 어쩌면 당신은 jQuery의'$ (document) .ready' 래퍼 내에서 evalJS에 파트를 넣어야합니다 ... –

관련 문제