2011-08-28 117 views
2

我有一個UITableView與自定義UITableViewCells在它。這些細胞可以用動畫打開和關閉。當用戶滾動時,我想關閉單元格。我這樣做,通過發佈這樣的通知:滾動時UITableViewCell動畫

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

這將調用哪個做我的簡單的動畫在我的UITableViewCell子類的方法。這工作正常,但動畫不會發生,直到用戶停止再次滾動UITableView。 滾動表格視圖時可以做這個動畫嗎?

+0

我知道,例如,如果在單元格中加載了一些圖片的UIWebView,然後當表格視圖滾動時,即使圖片已經加載,圖片也不會出現。 – Nekto

+1

你爲什麼使用通知?你是否試圖直接從滾動視圖委託(UITableView是一個UIScrollView子類)調用單元格動畫方法?考慮通知不是立即發送,而是爲下一個運行循環合併,所以可能是在滾動期間沒有消息發送,然後這解釋了動畫的延遲。這只是一個猜測 – viggio24

+0

通知可能不是最優雅的解決方案,但它似乎最簡單,因爲我必須存儲活動單元格並在滾動時調用該單元格以避免使用通知。看起來,通知是在細胞開始動畫時馬上發送的。打開時,單元格將向右滑動(有點像Tweetie/Twitter),然後在關閉它時會做一些反彈動畫。它確實關閉了,但是如果我不進行滾動就調用該方法(例如再次滑動單元格),它會執行小動作。 – simonbs

回答

2

下面是如何對單元子菜單進行滑動的詳細說明,例如twitter iphone應用。我認爲這與你的需求非常相似。它不使用通知來關閉單元格,而是使用來自UIScrollViewDelegate的事件,如其他評論者所推薦的。

iDevRecipes 查找idevrecipes.com上的一篇文章,名爲「Twitter iPhone應用程序如何在桌面上實現側滑動」。

有很好的描述,但也有代碼下載。

+0

這是比我的更好的實現方式。我甚至沒有想過使用UITableView來檢測滑動等等。相反,我正在檢測UITableViewCell的子類上的滑動。這很麻煩。非常感謝你。 – simonbs

0

您應該可以聽取UIScrollViewDelegate方法scrollViewDidScroll:然後開始您的活動。

查看Apple docs on UIScrollViewDelegate

編輯:如果我不清楚,UITableViewDelegate符合UISCrollViewDelegate

+0

這就是我現在正在做的事情。當我的表格視圖關閉時,它會創建一個「反彈效果」。我通過將UITableViewCell子類中的子視圖向後和向後滑動幾次來實現這種效果,但這種情況在用戶停止滾動之前不會發生。 – simonbs

0

scrollViewDidScroll:只能在用戶滾動結束時調用。您可能想嘗試使用scrollViewWillBeginDragging:委託方法來啓動您的通知,該方法在滾動操作開始時肯定會被調用。

還有幾個UIViewAnimationOptions常量(IIRC,UIViewAnimationOptionBeginFromCurrentState是我正在考慮的那個)影響動畫是否在另一個動畫動作期間開始,如滾動(跟蹤)。

您需要OR該選項以及動畫方法調用的options:參數中的現有動畫選項。