У меня есть распознаватель жесты, чтобы перетащить панель вверх, вниз, влево или вправо. Когда направление панорамирования невозможно, я не позволяю распознавателю начинать так, чтобы касания могли перейти к другим элементам пользовательского интерфейса внутри панели.
Однако на iOS7 перевод иногда получает reset между gestureRecognizerShouldBegin:
и моим обработчиком жестов handlePan:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer*)panGR
{
CGPoint trans = [panGR translationInView:self.view];
NSLog(@"should begin trans: (%.2f, %.2f)", trans.x, trans.y);
...
Эти журналы: should begin trans: (18.00, 0.00)
- (void)handlePan:(UIPanGestureRecognizer*)panGR
{
CGPoint trans = [panGR translationInView:self.view];
switch(panGR.state)
{
case UIGestureRecognizerStateBegan:
NSLog(@"handlePan began trans: (%.2f, %.2f)", trans.x, trans.y);
...
Эти журналы: handlePan began trans: (0.00, 0.00)
Это означает, что общий код для определения направления панорамирования (справа в этом случае) работает в gestureRecognizerShouldBegin:
и позволяет начать жест, но затем не может быть определен в handlePan:
, когда state
UIGestureRecognizerStateBegan
.
Является ли это ошибкой в iOS7 или имеет намеренное изменение поведения для размещения новых типов жестов? Кроме того, может ли кто-нибудь предложить хороший способ обойти эту проблему?