что-то странное действие на iOS5 с пользовательским UITabBarController - PullRequest
1 голос
/ 14 октября 2011

Я новичок в программировании на iOS.При создании пользовательского UITabbarController я застрял со странной разницей в действиях между iOS4 и iOS5.Если у кого-то есть идея для решения этой проблемы, пожалуйста, дайте мне знать, где я пропустил.

То, что я хотел, это.

  • UITableView / UITabBarController
  • Singleкасание для переключения панели вкладок должно работать даже во время прокрутки.
  • Двойное касание (и еще больше) должно распознаваться.

UITabBarController + UITapGestureRecognizer + UITableView работают вместе с событием двойного касания.

Что меня сводит с ума, так это.

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

Вот как я это сделал.

Я хочу, чтобы UITabBar распознавал двойную вкладку.Когда она дважды нажата, прокрутите UITableView к вершине.Поэтому я сделал проект с дополнением панели вкладок.

  • DoubleTapBarController (пользовательский UITabBarController)
    • панель вкладок (UITabBar)
    • Первый VC (пользовательский UIViewController)
      • UITabBarItem по умолчанию
    • Второй виртуальный канал (пользовательский и пустой UIViewController по умолчанию)
      • UITabBarItem по умолчанию

В первом представлении / VC

  • Добавлен простой вид таблицы с * таблицей Outlet-ed.
  • Пользовательский метод 'doubleTapped' для события двойного касания процесса, когда DoubleTabBarController отправляет сообщение.

В DoubleTabBarController

  • наследовать UITabBarController с протоколом
  • устанавливать жесты (одно касание, двойное касание) с UITapGestureRecognizer при событии viewDidLoad
  • tap1, tap2, tap3, tap4 для действий касания.

То, что я пытался (и не удалось).

  • Комментарий requireGestureRecognizerToFail между одиночным / двойным касанием.Не работает.
  • Комментарий всего распознавания двойного касания.Работает при прокрутке.Но нет события двойного нажатия.
  • Дважды нажмите на другую вкладку при прокрутке.Это делает отправку одного нажатия во время прокрутки.Но это тоже не может быть решением.
  • (Поскольку я сомневаюсь, что при установке жеста возникают проблемы с фокусировкой - двойное касание сработало одновременно!) Прокомментируйте двойное касание и замените его тройным касанием.Событие тройного нажатия отправлено в нужное время.Но событие одиночного касания по умолчанию не сработало в нужное время - например, добавлен жест двойного касания.

Мой код.

DoubleTabBarController.h

#import <UIKit/UIKit.h>
@interface DoubleTabBarController : UITabBarController <UITabBarDelegate>
- (id)init;
@end

DoubleTabBarController.m (часть)

- (void)viewDidLoad {
    [super viewDidLoad];

    UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap1)] autorelease];
    singleTap.numberOfTapsRequired = 1;
    singleTap.numberOfTouchesRequired = 1;
    singleTap.cancelsTouchesInView = NO;

    UITapGestureRecognizer *doubleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap2)] autorelease];
    doubleTap.numberOfTapsRequired = 2;
    doubleTap.numberOfTouchesRequired = 1;
    doubleTap.cancelsTouchesInView = NO;
    [singleTap requireGestureRecognizerToFail:doubleTap];
    [[self tabBar] addGestureRecognizer:singleTap];
    [[self tabBar] addGestureRecognizer:doubleTap];
}

Текущее состояние

Я потерял свое направление для решения этой проблемы.Пожалуйста, помогите мне:)

пс.Я столкнулся с той же проблемой на iOS 4.3, но она была решена удалением протокола UITabBarControllerDelegate.И это произошло снова в iOS 5.0: (

...