2016-05-17 5 views
1

Я пытаюсь определить, есть ли средство программной установки состояния распознавателя жестов, чтобы заставить его начать до того, как он действительно обнаружит ввод пользователя.Программный запуск распознавателя жестов в Swift?

Например, я добавляю распознаватель жеста к изображению, когда обнаружено длинное нажатие;

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:") 
myImage.addGestureRecognizer(longPressRecognizer) 

func longPressed(sender: UILongPressGestureRecognizer) { 

    let mainWidth = UIScreen.mainScreen().bounds.width 
    let mainHeight = UIScreen.mainScreen().bounds.height 

    let myView: UIView(frame: CGRect(x: 0, y: 0, width: mainWidth, height: mainHeight) 

    let gestureRecognizer = UIPanGestureRecognizer(target: self, action: "handlePan:") 
    myView.addGestureRecognizer(gestureRecognizer) 

    self.view.addSubview(myView) 

} 

В функции handlePan(), я могу определить, когда панорамирование начинается и заканчивается;

func handlePan(gesture: UIPanGestureRecognizer) { 

    if gesture!.state == UIGestureRecognizerState.Began { 
     print("Started pan") 
    } 

    if gesture!.state == UIGestureRecognizerState.Ended { 
     print("Ended pan") 
    } 

} 

Моя проблема заключается в том, чтобы определить, когда жест начала, пользователь должен (1) Длительное нажатие на изображение, (2) освободить палец (3) нажмите и удерживайте и начать панорамирование. В идеале я хотел бы, чтобы пользователь (1) долго нажимал на изображение, (2) начинал панорамирование.

Для достижения этой цели я представляю себе, что мне нужно выяснить способ «обмануть» вещи, полагая, что жест пантов уже начался.

примечание: В практичности сложность сложнее, чем представленная здесь, поэтому мне нужно добавить подзону с помощью жесты панорамы, а не просто добавить жест панорамы к изображению напрямую.

+0

Не могли бы вы прикоснуться к событию «Touch Down» вместо «Touch Up Inside». Тогда вам не нужно будет выпустить палец для отправки события. – Starlord

ответ

1

Что вы хотите сделать, это добавить и жест, распознающий фронт, установить их делегаты в свой класс, позволить им распознавать одновременно (используя метод ниже) и использовать данные только с панорамирования, когда долгое нажатие успешно были признаны.

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
    shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 
Смежные вопросы