2011-08-28 7 views
2

사용자 정의 UITableViewCells가 포함 된 UITableView가 있습니다. 이 셀은 애니메이션으로 열고 닫을 수 있습니다. 사용자가 스크롤하면 셀을 닫고 싶습니다. 다음과 같이 알림을 게시하여이 작업을 수행합니다.스크롤하는 동안 UITableViewCell 애니메이션

[[NSNotificationCenter defaultCenter] postNotificationName:@"closeSwipedCell" object:nil]; 

이 작업은 UITableViewCell의 하위 클래스에서 간단한 애니메이션을 수행하는 메서드를 호출합니다. 이것은 정상적으로 작동하지만 사용자가 UITableView를 다시 스크롤 할 때까지 애니메이션이 실행되지 않습니다. 테이블 뷰를 스크롤하는 동안이 애니메이션을 수행 할 수 있습니까?

+0

예를 들어, 테이블 뷰가 스크롤되는 동안 일부 그림을로드하는 셀에 UIWebView가있는 경우 그림이 이미로드되어 있어도 그림이 나타나지 않습니다. – Nekto

+1

알림을 사용하는 이유는 무엇입니까? 스크롤 뷰 대리자 (UITableView는 UIScrollView 하위 클래스)에서 직접 셀 애니메이션 메서드를 호출하려고 했습니까? 알림이 즉시 전송되지는 않지만 다음 실행 루프에 대해 병합되므로 스크롤하는 동안 아무런 메시지도 전송되지 않고이어서 애니메이션의 지연이 설명 될 수 있습니다. 이것은 단지 추측입니다 – viggio24

+0

알림은 가장 우아한 해결책은 아니지만 활성 셀을 저장하고 스크롤을 사용하여 알림을 사용하지 않아야하므로 가장 간단한 것처럼 보입니다. 셀이 애니메이션을 시작하면 즉시 알림이 전송 된 것 같습니다. 열면 셀이 오른쪽으로 밀려나고 (Tweetie/Twitter와 같은 비트), 닫을 때 약간의 바운스 애니메이션이 수행됩니다. 그것은 닫히지 만 스크롤하지 않고 메서드를 호출하면 (예 : 셀을 다시 스 와이프하는) 작은 "바운스 (bounce)"애니메이션을 만들지 않습니다. – simonbs

답변

2

트위터 아이폰 앱처럼 셀 하위 메뉴로 스 와이프하는 방법에 대한 훌륭한 설명입니다. 나는 그것이 당신이 찾고있는 것과 매우 유사하다고 생각합니다. 셀을 닫는 데 알림을 사용하지 않고 다른 주석 기가 권장 한대로 UIScrollViewDelegate의 이벤트를 사용합니다.

iDevRecipes idevrecipes.com에서 "Twitter iPhone 앱이 테이블에서 사이드 스 와이프를 구현하는 방법"이라는 게시물을 찾습니다.

좋은 설명뿐 아니라 다운로드 할 코드가 있습니다.

+0

그건 내 방법보다 나은 구현 방법입니다. UITableView를 사용하여 스 와이프를 감지하는 등의 작업을 수행하지 않았습니다. 대신 나는 UITableViewCell의 서브 클래스에서 스 와이프를 감지하고 있었다. 그것은 훨씬 더 번거 롭습니다. 고맙습니다. – simonbs

0

UIScrollViewDelegate 방법 scrollViewDidScroll:을 청취하고 이벤트를 시작해야합니다.

Apple docs on UIScrollViewDelegate을 확인하십시오.

편집 : 내가 분명하지 않은 경우 UITableViewDelegateUISCrollViewDelegate을 따릅니다.

+0

그 순간에 제가하고있는 것이 있습니다. 내 테이블 뷰가 닫히면 "바운스 효과"가 생성됩니다. UITableViewCell 서브 클래스 내부에서 서브 뷰를 슬라이딩하여이 효과를 얻었지만 몇 번이나 네 번 스크롤하지만 사용자가 스크롤을 멈출 때까지는 발생하지 않습니다. – simonbs

0

scrollViewDidScroll:은 사용자 스크롤이 끝날 때만 호출 할 수 있습니다. scrollViewWillBeginDragging: 대리자 메서드를 사용하여 알림을 시작하려고 할 수 있습니다.이 메서드는 스크롤 동작의 시작 부분에 반드시 호출됩니다.

스크롤링 (추적)과 같은 다른 애니메이션 작업 중에 애니메이션이 시작될 것인지 여부에 영향을주는 여러 개의 UIViewAnimationOptions 상수 (IIRC, UIViewAnimationOptionBeginFromCurrentState)가 있습니다.

애니메이션 메서드 호출의 options: 매개 변수에서 기존 애니메이션 옵션을 사용하면 해당 옵션이 OR입니다.

관련 문제