2011-07-28 2 views
4

전체 테이블을 빈 항목으로 채운 다음 사용자가 테이블 스크롤을 시작할 때 페이지 매김을 사용하여 백그라운드로로드하는 페이지가 매겨진 REST 서비스 용 클라이언트를 구현했습니다.reloadRowsAtIndexPaths가 사용자 입력을 차단하지 못하게하려면 어떻게해야합니까?

이 약간의 세부를 제외하고 잘 작동하는 것 같다 : (UIKit이 너무 필요하기 때문에) 나는 메인 UI 스레드에서 reloadRowsAtIndexPaths:를 호출하고, 나는 애니메이션이 때때로 나를 입력 접촉을 상실하게 느낄 .

사용자가 목록을 스크롤하기 시작하고 항목이로드되기 시작합니다. 때때로 사용자가 화면을 다시 만지면서 동시에 다시로드 애니메이션이 발생하고이 터치가 인식되지 않는 경우가 있습니다. 그런 다음 스크롤이 계속되지 않고 중지됩니다. 항상 발생하는 것은 아니며 사용자가 드문 경우입니다 (사용자가 아래로 스크롤하기 전에 각 행의 결과를 읽어야합니다).하지만 끝까지 나를 귀찮게합니다.

대부분의 애니메이션을 블록으로 만들고 있는데 UIViewAnimationOptionAllowUserInteraction 플래그가 도움이됩니다. reloadRowsAtIndexPaths의 블록 버전이있어 리로드 애니메이션이 스크롤과 사용자 상호 작용을 차단하지 않습니까?

+0

당신이 항목을 다시로드하는 데 사용하는 코드를 게재 할 수 있습니까? 별도의 스레드에서 REST 호출을 수행하고 있습니까? 로딩이 시작되고 있음을 사용자에게 어떻게 나타내 보입니까? –

답변

2

데이터를 수신하고 표시 할 준비가되면 reloadRowsAtIndexPaths:에만 전화를 걸어서 데이터를 스레드에 백그라운드로드하는 것이 해결책이라고 생각합니다. 또한 애니메이션이 아닌 데이터를 다시 표시해야합니다.

현재 계획으로 놓친 것을 해결하기 위해 할 수있는 일은 없을 것이라고 생각합니다. 내 제안은 "iOS가 원하는 것을하기 위해 iOS에 관심을 기울이십시오"보다는 "iOS가 원하는 것을하십시오"입니다. 네, 듣고 싶지 않은 대답 일 수도 있지만, 그것이 작동하는 방식 일뿐입니다.

(, BTW 당신은 ​​항상 개선 요청을 할 bugreporter.apple.com을 사용할 수 있습니다! :)

+0

지금까지 버그 리포터를 사용하는 것은 벽과 이야기하는 것보다 나빴습니다. 그러나 게시물을 읽으면 지금 시도해 볼만한 것을 생각 나게합니다. –

+0

아니, 작동하지 않습니다. bugreporter를 사용하고 최선을 다하겠습니다. –

관련 문제