Я намереваюсь установить фокус доступности (фокус с возможностью касания), используя UIAccessibilityLayoutChangedNotification
на кнопке элемента UIAlertView
. Чтобы сохранить ссылку на кнопку, это было реализовано в приведенном ниже коде:
UIAlertView *alert = [[[UIAlertView alloc] init] autorelease];
alert.delegate = self;
[alert setTitle:@"Title"];
[alert setMessage:@"Message"];
[alert addButtonWithTitle:@"Button"];
UIButton *yesButton = [alert.subviews lastObject];
[yesButton setHidden:NO];
myButton = [[UIButton buttonWithType:UIButtonTypeCustom] autorelease];
[myButton retain];
[alert addSubview:myButton];
[alert show];
[myButton setAccessibilityLabel:@"This is my button"];
[myButton setFrame:yesButton.frame];
[alert show];
Если VoiceOver запущен, я хочу, чтобы фокус был на кнопке, а не на элементе заголовка. Итак, я делаю это, когда отображается окно предупреждения:
if(UIAccessibilityIsVoiceOverRunning()){
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, myButton);
}
Тем не менее, метка доступности кнопки считывается VoiceOver («это моя кнопка»), но фокус, который можно нажимать, не устанавливается на кнопку, а остается на элементе заголовка UIAlertView