Ответ 1
Используйте UISwipeGestureRecognizer
. Не намного больше сказать, что распознаватели жеста легко. Есть даже видео WWDC10 по этому вопросу. Сессии 120 и 121.:)
В моем приложении для iPhone я должен распознать жест смахивания, сделанный пользователем на представлении.
Я хочу, чтобы жесты считывания распознавались и выполняли функцию при пролистывании.
Мне нужно, чтобы вид скользил по горизонтали и показывал другой вид, когда пользователь делает жест смахивания.
Что должно быть сделано?
Как я узнаю это?
Используйте UISwipeGestureRecognizer
. Не намного больше сказать, что распознаватели жеста легко. Есть даже видео WWDC10 по этому вопросу. Сессии 120 и 121.:)
Если вы знаете, как это работает, но все же нужен быстрый пример, вот он! (он будет полезен, по крайней мере, для меня, когда мне понадобится пример копирования-вставки, не пытаясь его запомнить)
UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];
[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:mSwipeUpRecognizer];
и в .h файле добавить:
<UIGestureRecognizerDelegate>
Документация theres apple и образец для распознавания проводов см. ниже ссылку;
Следующая ссылка ниже перенаправляет вас на видеоуроку, в которой объясняется, как обнаруживать удары на iPhone в Objective-C:
Учебное пособие UISwipeGestureRecognizer (обнаружение проверок на iPhone)
Пример кода ниже, чтобы достичь этого в Swift:
Для каждого направления необходимо иметь один UISwipeGestureRecognizer
. Это немного странно, потому что свойство UISwipeGestureRecognizer.direction
- это битовая маска в стиле параметров, но каждый распознаватель может обрабатывать только одно направление. Вы можете отправить их всем одному и тому же обработчику, если хотите, и отсортировать их там, или отправить их другим обработчикам. Здесь одна реализация:
override func viewDidLoad() {
super.viewDidLoad()
var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeDown.direction = UISwipeGestureRecognizerDirection.Down
self.view.addGestureRecognizer(swipeDown)
}
func respondToSwipeGesture(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.Right:
println("Swiped right")
case UISwipeGestureRecognizerDirection.Down:
println("Swiped down")
default:
break
}
}
}