在 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:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题