#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];