2016-03-25 10 views
0

Я, кажется, возникли некоторые проблемы со следующей установкой:вид Переход в TabBarController прерывает touchesMoved

  • У меня есть подкласс UILongPressGestureRecognizer (import UIKit.UIGestureRecognizerSubclass) для того, чтобы переопределить touchesMoved.
  • У меня есть кнопка, которая содержит объект этого подкласса GestureRecognizer , который вызывает селектор.
  • Метод, вызываемый этим селектором, содержит обратный вызов, который вызывается исходным подклассом GestureRecognizer каждый раз, когда вызывается touchesMoved.

Поэтому, когда я нажимаю на кнопку, а затем передвигаю палец, обратный вызов вызывается несколько раз, и я могу просматривать свойства касаний, например, число. (touches.count)

Я пытаюсь перейти просматривать контроллеры в TabBarController на основе информации касаний, но когда я это реализовать (либо через selectedIndex = или UIView.transitionFromView()) обратный вызов вызывается только в начале longPressEvent. (т. е. только один раз, а не несколько раз). Я не знаю, почему это происходит. Так как кнопка находится в TabBarController, на нее не должно влиять переход.

Вот некоторые из соответствующего кода:

GestureRecognizer подкласс:

import UIKit.UIGestureRecognizerSubclass 

class LongPressGestureRecongnizerSubclass: UILongPressGestureRecognizer{ 
    var detectTouchesMoved = false 
    var toCallWhenTouchesMoved: ((touches: Set<UITouch>) ->())? 
    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent) { 
     if detectTouchesMoved{ 
      toCallWhenTouchesMoved?(touches: touches) 
     } 

    } 
} 

метод делегата вызывается, когда longPress признается.

func centerButtonLongPressed(tabBarView: TabBarView!){ 
    for gestureRecognizer in tabBarView.centerButton.gestureRecognizers!{ 
     if let longPressGestureRecognizer = gestureRecognizer as? LongPressGestureRecongnizerSubclass{ 
      longPressGestureRecognizer.detectTouchesMoved = true 
      longPressGestureRecognizer.toCallWhenTouchesMoved = ({(touches: Set<UITouch>) -> (Void) in 
       //Here I can view touches properties every time touchesMoved() is called, but not when I try to transition view here. 
      }) 
     } 
    } 
} 

UPDATE:

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

Это приложение модификация autolayout двигателя от фонового потока, что может привести к повреждению двигателя и странным авариям. Это приведет к исключению в будущей версии.

Как предотвратить медленный синхронный код перехода от беспорядка с помощью touchesMoved()?

Как я могу достичь того, что я представляю? Спасибо за любую помощь.

ответ

0

Я понял, что не было проблемы с анимацией, прерывающей прикосновения. Прикосновения были отменены, потому что я неправильно использовал пользовательский UITabBarController, FoldingTabBar, который можно найти here

 Смежные вопросы

  • Нет связанных вопросов^_^