2013-12-17 41 views
0

我無法重新排列tableView中的行。該表是在編輯模式下,所有的相關方法都覆蓋,以返回YES重新排列UITableView行 - fromIndexPath和toIndexPath相同

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { 
    NSLog(@"From: %d to: %d", fromIndexPath.row, toIndexPath.row); 
    // some code to modify the dataSource 
    // ... 
} 

什麼情況是,雖然重新安排控制是表示,如果我試圖拖動它,它只能移動一行一點點,然後moveRowAtIndexPath:toIndexPath:被調用,並且fromIndexPathtoIndexPath都是一樣的!

經過進一步檢查,似乎有時我會設法將行向上或向下滑動以使其實際上可以正常工作,但一次只能移動一行。

我有另一個應用程序,我可以緩慢而輕鬆地重新排列行,但在這裏,一旦我開始拖動,它似乎想在一秒鐘後提交更改,所以如果我沒有移動它足夠遠,它只是跳回到原來的行。是什麼造成的?

+0

您需要在此處顯示更多代碼... tableView安裝程序/您的dataSource更改..如果您有一個空的清潔項目拖動工作得很好。 – calimarkus

回答

0

經過仔細考慮,我意識到這個問題是由於應用程序的UI層,而不是tableView配置。罪魁禍首是我添加到應用程序的側邊菜單模塊,默認情況下,該應用程序會添加一個UIGestureRecognizer來檢測用戶何時滑動屏幕以顯示側面的菜單。它干擾tableView的默認手勢識別器,一旦禁用,一切正常。當使用第三方庫時,請注意這些不良的副作用:)