5

我有一个包含 UITableView 的视图。当用户滑动时,我可以在单元格上显示删除按钮。

如果用户触摸删除按钮,将触发一个方法(这工作正常)。但是,如果用户决定不删除单元格并且他触摸视图中的任何位置以隐藏删除按钮。

我怎样才能检测到呢?

4

3 回答 3

3

[UITableViewCell showingDeleteConfirmation]

或者

[UITableViewCell willTransitionToState:]作为UITableViewCellStateShowingDeleteConfirmationMask参数

于 2012-05-17T08:27:40.147 回答
3

当用户在单元格中的删除标记之外点击时,您的程序应该会收到tableView:didEndEditingRowAtIndexPath:对表格视图委托的调用。

于 2012-05-17T08:27:52.253 回答
1

在你的 UITableViewCell 子类中实现 willTransitionToState: 方法。当单元格被转换到/从编辑状态时,UITableView 会调用此方法。

在您的类的实现中,您将需要有条件地检查传递给方法的掩码参数的值,以确定单元格正在转换到/从什么状态。掩码的可能值是...

enum {
    UITableViewCellStateDefaultMask                     = 0,
    UITableViewCellStateShowingEditControlMask          = 1 << 0,
    UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1
};

在您的情况下,您将需要观察到 UITableViewCellStateDefaultMask 的转换,因此您的实现将如下所示......

- (void)willTransitionToState:(UITableViewCellStateMask)state {
    if (state == UITableViewCellStateDefaultMask) {
        // User has switched back to default state...
        // ...
    }
}
于 2012-05-17T08:33:41.137 回答