Я хочу создать один вид в главном представлении и применить к этому представлению жест и перетащить (панорамирование). Но как узнать, что это салфетки или жест?Как обнаружить жест между салфеткой и перетаскиванием?
ответ
@dfd правильный. Для этого вы всегда должны использовать встроенные распознаватели жестов iOS. Если приложения должны были реализовать свою собственную логику для определения жестов, iOS будет очень непоследовательным для пользователей.
Каждый распознаватель жестов будет подклассом UIGestureRecognizer
. Вы должны прочитать documentation.
В вашем случае вы хотите UISwipeGestureRecognizer
и UIPanGestureRecognizer
.
Вот пример:
class ViewController: UIViewController {
override func viewDidLoad() {
let swipeRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(userSwiped))
swipeRecognizer.numberOfTouchesRequired = 1
swipeRecognizer.direction = .left
let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(userPanned))
panRecognizer.minimumNumberOfTouches = 1
view.addGestureRecognizer(swipeRecognizer)
view.addGestureRecognizer(panRecognizer)
}
@objc private func userSwiped(recognizer: UISwipeGestureRecognizer) {
}
@objc private func userPanned(recognizer: UIPanGestureRecognizer) {
}
}
Здесь я создаю жест распознавателей и добавить их в зависимости от того, вид я хочу. Вам не обязательно делать это в viewDidLoad
. Установив цель, мы устанавливаем, какой метод следует вызывать, когда распознается жест. Активаторы автоматически передают себя в качестве аргументов в свои пользовательские функции, чтобы вы могли запросить свойство state
и т. Д. Вы должны прочитать документацию, чтобы понять, как этот процесс отличается для каждого распознавателя жестов.
Спасибо. Хороший пример. –
Самый простой способ - использовать UIGestureRecognizers - позволить ОС сделать различие. – dfd
@dfd ok Спасибо –