3

右側の削除ボタンが表示されたときに通知する willTransitionToState を使用しています。ただし、セル領域外をタップして削除をキャンセルした場合、このメソッドは呼び出されません。tableView:didEndEditingRowAtIndexPath も試しました。

この質問にある回答は、iOS 7 では機能しません。

4

1 に答える 1

0

次のコードは、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;
}
于 2013-11-08T07:34:08.377 に答える