2015-08-05 5 views
3

Я создаю игру, специально предназначенную для воспроизведения с использованием Switch access. Игра строит сетку кнопок динамически в зависимости от уровня, который имитирует расположение сетки значков iPad. С характером доступа к коммутатору у меня не может быть кнопки возврата, чтобы вернуться в главное меню, так как это будет подсчитываться внутри игры в виде кнопки и включено в табуляцию через пользователя.Возврат в главное меню при длинном нажатии кнопки доступа переключателя

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

Вот код, который я использую, который работает в симуляторе.

Добавление кнопки UILongPressGestureRecognizer к кнопке.

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(UILongPressBack:)]; 
     [self.button addGestureRecognizer:longPress]; 

Метод призывал к длинному нажатию.

- (IBAction)UILongPressBack:(UILongPressGestureRecognizer*)sender { 
     if (sender.state == UIGestureRecognizerStateEnded) { 
     MainViewController * mainPage = [[MainViewController alloc]init]; 
     [self presentViewController:mainPage animated:YES completion:nil];  
     } 
} 

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

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

Спасибо за любую помощь.

ответ

2

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

Добавление пользовательских действий

Если вы хотели бы предложить действие уникального для пользователей вспомогательных технологий, реализации -accessibilityCustomActions. Это позволяет пользователям выбирать из набора определенных пользователем действий в дополнение к системному стандарту активировать действие.

Код

Например, чтобы разоблачить и реагировать на пользовательские действия foo на иначе голой UIView, можно реализовать:

- (BOOL)isAccessibilityElement 
{ 
    return YES; 
} 

- (NSArray *)accessibilityCustomActions 
{ 
    UIAccessibilityCustomAction *fooAction = [[UIAccessibilityCustomAction alloc] initWithName:@"FooAction" target:self selector:@selector(foo)]; 
    return @[fooAction]; 
} 

- (void)foo 
{ 
    NSLog(@"foo"); 
} 

Выходной

Выполнение кода выше, с включенным управлением переключателем, вы видите пункт меню для нового действия:

An empty, grey view highlighted by the blue cursor of Switch Control. A menu is visible with the options "Tap" and "FooAction"

Edit:

В комментариях, вы спросите, как это может быть реализовано без меню, так как он требует дополнительных нажатий переключателя доступа, который влияет на геймплей. Существует другой подход. Вы можете отобразить кнопку меню, которая явно помечена не доступна (isAccessibilityElement = NO). Эта кнопка не будет находиться в порядке сканирования, но пользователи Control Control все равно могут нажимать ее путем сканирования точки с помощью «Скользящего курсора» вместо сканирования объектов. Как обычно, я бы отговаривал делать что-то нестандартное, если только вы не уверены в возможностях своих пользователей.

+1

Ах да, конечно. Лицо, использующее листовой выключатель, например, никогда не сможет зарегистрировать длинную печать, как глупо от меня. Если кто-то играет в мою игру с одним переключателем, переключатель будет настроен на регистрацию в качестве простого нажатия без меню, поэтому я не смогу использовать настраиваемое действие, как вы предложили. Есть ли другой способ, который я могу предложить для пользователя, чтобы вернуться в главное меню при игре? Большое спасибо за вашу помощь. – arhkfp

+0

@kfp_arh Я сделал редактирование, чтобы включить альтернативный подход. – Justin

+0

Большое спасибо за ваши советы и ввод, я буду играть с несколькими вещами и искать отзывы от своих пользователей. – arhkfp

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