Как я могу добавить жесты салфетки к 3 разным UILabels?

#ios #objective-c #uigesturerecognizer #swipe #gestures

#iOS #objective-c #uigesturerecognizer #проведите пальцем #жесты

Вопрос:

Я новичок в XCODE — Objective-C, и в моем самом первом приложении мне нужно добавить к 3 разным ярлыкам 2 жеста салфетки (вверх и вниз).

Чтобы быть более понятным (пока я не могу добавлять изображения), у меня есть 3 таких ярлыка:

                            [label1].[label2][label3]
  

Минимальное значение для всех меток равно «0»
Максимальное значение для label1 равно «2», для label2 и label3 равно «9» для каждого.

Когда я провожу пальцем вниз по ярлыкам, мне нужно уменьшить значение, а когда я провожу пальцем вверх, мне нужно уменьшить значение.

Как я могу это сделать? в примере, который я сделал до того, как я это сделал, но работает только для 1 одной UILabel.

Заранее большое спасибо. С уважением.

Комментарии:

1. Можете ли вы опубликовать какой-нибудь код?

Ответ №1:

Вам нужно инициализировать 3 свайпа, каждый из которых помечает сам свайп. Я предлагаю использовать теги для разных меток.

Вот код, который создает метки программно:

 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
label1.text = @"Label 1";
label1.tag = 10;
label1.userInteractionEnabled = YES;
UISwipeGestureRecognizer *swipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeLabel:)];
[label1 addGestureRecognizer:swipe1];

UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(50, 150, 100, 100)];
label2.text = @"Label 2";
label2.tag = 20;
label2.userInteractionEnabled = YES;
UISwipeGestureRecognizer *swipe2 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeLabel:)];
[label2 addGestureRecognizer:swipe2];

UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(50, 250, 100, 100)];
label3.text = @"Label 3";
label3.tag = 30;
label3.userInteractionEnabled = YES;
UISwipeGestureRecognizer *swipe3 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeLabel:)];
[label3 addGestureRecognizer:swipe3];

[self.view addSubview:label1];
[self.view addSubview:label2];
[self.view addSubview:label3];
  

Метод салфетки:

 - (void)didSwipeLabel:(id)sender
{
    // Parse the swipe gesture
    UISwipeGestureRecognizer *swipe = sender;
    // Get the view that called swipe
    UILabel *swipedLabel = (UILabel *)swipe.view;
    // Switch tag
    switch (swipedLabel.tag) {
        case 10:
            NSLog(@"Swiped label 1");
            break;
        case 20:
            NSLog(@"Swiped label 2");
            break;
        case 30:
            NSLog(@"Swiped label 3");
            break;
        default:
            break;
    }
}
  

Если вы предпочитаете использовать Interface Builder, вы можете выполнить настройку тега представления на вкладке «Инспектор атрибутов»:

введите описание изображения здесь

Не забудьте установить userInteractionEnabled значение YES . Я оставил логическую проверку и проверку направления на ваше усмотрение.

Комментарии:

1. Большое спасибо за ваш ответ!!!!! Я новичок в xcode, как я уже упоминал, я пытаюсь использовать Interface builder, но… как я могу определить жесты прокрутки ВВЕРХ и ВНИЗ с помощью вашего кода? Я полагаю, что жест по умолчанию используется слева направо…

2. Спасибо! С вашим кодом и другим ответом, который я нашел, я теперь могу обнаружить СВАЙП ВНИЗ, но не свайп ВВЕРХ. Вот мой код: // Creando проводит по программе UISwipeGestureRecognizer *swipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector (didSwipeLabel:)]; swipe1.direction = UISwipeGestureRecognizerDirectionUp; [self.view addGestureRecognizer:swipe1]; swipe1.direction = UISwipeGestureRecognizerDirectionDown; [self.view addGestureRecognizer:swipe1]; [Dato1 addGestureRecognizer:swipe1]; [self.view addSubview:Dato1];