Книга: iOS. Приемы программирования
Обсуждение
Обсуждение
Жест смахивания (скольжения) — одно из наиболее простых движений, регистрируемых встроенными распознавателями жестов, входящими в состав iOS SDK. Это простое движение одного или нескольких пальцев по экрану в том или ином направлении. Класс UISwipeGestureRecognizer, как и любые другие распознаватели жестов, наследует от класса UIGestureRecognizer и добавляет к нему различные функции. В частности, это свойства, позволяющие указывать направление, в котором должны выполняться жесты смахивания, чтобы система их обнаружила, а также определять, сколько пальцев пользователь должен держать на экране, чтобы можно было совершить жест смахивания. Не забывайте, что жесты смахивания являются дискретными.
Метод handleSwipes:, которым мы воспользовались при написании распознавателя жестов, можно реализовать следующим образом:
— (void) handleSwipes:(UISwipeGestureRecognizer *)paramSender{
if (paramSender.direction & UISwipeGestureRecognizerDirectionDown){
NSLog(@"Swiped Down.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionLeft){
NSLog(@"Swiped Left.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionRight){
NSLog(@"Swiped Right.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionUp){
NSLog(@"Swiped Up.");
}
}
В свойстве direction экземпляра класса UISwipeGestureRecognizer можно скомбинировать несколько направлений, пользуясь поразрядным операндом OR (ИЛИ). В языке Objective-C он обозначается вертикальной чертой (|). Например, чтобы получить прямое диагональное смахивание по направлению к нижнему левому углу экрана, можно скомбинировать значения UISwipeGestureRecognizerDirectionLeft и UISwipeGestureRecognizerDirectionDown, применяя при создании распознавателя жестов знаки вертикальной черты. В данном примере мы пытаемся обнаружить только жесты смахивания, идущие справа налево.
Обычно смахивание выполняется только одним пальцем, но существует свойство numberOfTouchesRequired класса UISwipeGestureRecognizer, в котором можно указать количество пальцев, необходимое для того, чтобы жест был распознан.