右側の削除ボタンが表示されたときに通知する willTransitionToState を使用しています。ただし、セル領域外をタップして削除をキャンセルした場合、このメソッドは呼び出されません。tableView:didEndEditingRowAtIndexPath も試しました。
この質問にある回答は、iOS 7 では機能しません。
右側の削除ボタンが表示されたときに通知する willTransitionToState を使用しています。ただし、セル領域外をタップして削除をキャンセルした場合、このメソッドは呼び出されません。tableView:didEndEditingRowAtIndexPath も試しました。
この質問にある回答は、iOS 7 では機能しません。
次のコードは、iOS 7 で機能します (iOS 6 では機能しません)。iOS 6 のソリューションはこれです。
- (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;
}