2012-09-24 5 views
2

원격 서버에서 호스팅되는 페이지를로드하는 UIWebView가 있습니다. 문서 준비가되면 비동기식 jQuery.ajax 요청을 서버로 보내서 서버에서 반환 된 값 목록을 드롭 다운으로 채 웁니다.iOS 6 UIWebView 대리자 메서드

페이지를로드하고이 요청을 수행하는 동안 반투명 UIView와 UIWebView를 오버레이하는 UIActivityIndicator가 있습니다. 로드 된 뷰를 제거하는 webViewDidFinishLoad 대리자 메서드를 구현했습니다.

  • iOS 4/5에서이 대리자 메서드는 async 요청이 완료된 후에 실행됩니다. 이것은 내가 원하는 행동입니다.
  • iOS 6에서이 위임 메서드는 비동기 요청이 완료되고로드보기가 너무 일찍 사라지기 전에 실행됩니다.

의도적인지 알 수 있습니까? 어떤 아이디어이 문제를 해결하는 방법?

감사합니다.

+0

요청을 실행 하시겠습니까? 아마도 여기에 설명 된대로 요청이 캐시됩니다. [iOS 6에서 Safari가 $ .ajax 결과를 캐시합니까?] (http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results)) –

+0

응답 해 주셔서 감사합니다. jQuery ajax 요청은 jsonp를 사용하므로 매번 매개 변수로 전달되는 고유 한 콜백 메소드가 있으므로 캐시하지 않아야합니다. 나는 또한 요청이 매번 200 건임을 프록시를 통해 확인했다. 서버의 캐시 제어 응답 헤더도 "no-cache"입니다. 귀하가 제공 한 링크 중 하나의 답변에 "노 캐시 (no-cache)"를 발행하여 문제를 해결할 것을 제안했습니다. –

+0

베타 변경 로그에 다음과 같이 표시됩니다. iOS 6 이상에서는 UIWebView 클래스가 내용을 비동기 적으로 그립니다. 나는 그것과 관련이 있는지 궁금하다. –

답변

0

나는 의도적 인 변화라고 결론을 내 렸습니다. 기본적으로 아이폰 OS 6으로, 웹킷은 비동기 적으로 그 내용을 페인트 :

http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html#//apple_ref/doc/uid/TP40012166-CH1-SW13

따라서 문서 부하에 비동기 요청이 진정으로 비동기 될 것입니다. 이 요청이 실행되는 동안 문서가 완전히로드되었음을 UIWebView의 대리자에 알립니다. iOS 6 이전에는 비동기 요청이 완료된 후이 알림이 실행되었습니다. 따라서 요청은 진정으로 비동기 적이 아닙니다.

퍼거 (Fergal).

관련 문제