Проведите UITableViewCell и автоматически активируйте действие, не нажимая кнопку действия

avatar
ekashking
1 июля 2021 в 16:21
34
0
1

Вот <39985555539647>leadingSwipeAction на UITableViewCell. Мой вопрос заключается в том, как вызвать действие delete, просто проведя пальцем по экрану и не нажимая фактическую кнопку, которая появляется слева.

ОЧЕНЬ ВАЖНО:<39985555539654> я не хочу использовать метод actions.performsFirstActionWithFullSwipe = YES; . Я хочу, чтобы действие запускалось автоматически только при первом пролистывании 1/3 экрана.

- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath
{
     UIContextualAction *delete = [UIContextualAction 
contextualActionWithStyle:UIContextualActionStyleNormal title:nil 
handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull 
sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
    
    // your code...
    
    }];
    delete.image  = [UIImage systemImageNamed:@"trash"];

    UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:[[NSArray alloc] initWithObjects:delete, nil]];

    actions.performsFirstActionWithFullSwipe = NO;

    return actions;
}

Спасибо.

Источник
AdamPro13
1 июля 2021 в 17:17
0

Пролистывание примерно до 80% ширины экрана должно привести к срабатыванию действия без необходимости дополнительного касания. Я не думаю, что вам нужны дополнительные изменения кода.

ekashking
1 июля 2021 в 17:21
0

Нет. Действие «Ответить на сообщение» в WhatsApp работает иначе. Здесь я могу смахнуть около 30%, и это уже вызывает действие. Мне нужно 30% - 50%. Никто не смахивает 80%.

AdamPro13
1 июля 2021 в 17:45
0

Если вам нужно такое конкретное поведение, вам понадобится использовать полностью настраиваемую реализацию, тогда вы не сможете использовать поведение по умолчанию для UITableView UISwipeActionConfiguration.

ekashking
1 июля 2021 в 17:55
0

Есть ли какие-либо учебные пособия, которые вы могли бы знать?

Ответы (0)