在 iOS 7 中取消 UITableViewCell 滑动删除时收到通知

Posted

技术标签:

【中文标题】在 iOS 7 中取消 UITableViewCell 滑动删除时收到通知【英文标题】:Be notified when a UITableViewCell swipe delete is cancelled in iOS 7 【发布时间】:2013-09-26 19:13:13 【问题描述】:

我正在使用 willTransitionToState,它会在显示右侧删除按钮时通知我。但是,当通过在单元格区域外点击取消删除时,不会调用此方法。我也试过 tableView:didEndEditingRowAtIndexPath。

this 问题中的答案不适用于 ios 7。

【问题讨论】:

我也有同样的需求。当删除按钮可见时,我的自动布局位置似乎得到了调整,但是当取消时,它不会恢复到以前的布局!只有当我抓住一个抓手重新排序控件时,它才会得到一个 layoutSubviews 调用。烦人! 【参考方案1】:

以下代码适用于 iOS 7(不适用于 iOS 6)。 iOS 6 解决方案是this。

- (void)layoutSubviews

    [super layoutSubviews];

    [self detectDeleteButtonState];

    // it takes some time for delete button to disappear
    [self performSelector:@selector(detectDeleteButtonState) withObject:self afterDelay:1.0]; 


- (void)detectDeleteButtonState

    BOOL isDeleteButtonPresent = [self isDeleteButtonPresent:self.subviews];
    if (isDeleteButtonPresent) 
        NSLog(@"delete button is shown");
     else 
        NSLog(@"delete button is gone");
    


-(BOOL)isDeleteButtonPresent:(NSArray*)subviews

    for (UIView *subview in subviews)
    
        if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"])
        
           return [subview isHidden] == NO;
        
        if([subview.subviews count] > 0)
           return [self isDeleteButtonPresent:subview.subviews];
        
    

    return NO;

【讨论】:

以上是关于在 iOS 7 中取消 UITableViewCell 滑动删除时收到通知的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 原生登录弹出窗口中处理取消的选择

iOS 7 UITextView 的原生链接不会取消触摸

更改搜索栏取消按钮的名称 IOS 7

iOS:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题

iOS 7 中 UIActivityViewControllers 的模态状态栏和导航栏文本颜色

在 iOS 7 中自定义 UISearchBar