我有一个工具栏,我想在打开辅助功能时跳过标题按钮。
我可以使用 accessibilityElementsHidden 跳过整个 工具栏的 accessibility。
但我只是想跳过标题按钮的可访问性。
我尝试单独禁用标题按钮的可访问性。
但它不起作用。
所以我设置了 AccessibilityElements 属性,它跳过标题栏并读出右侧的 DONE 按钮。但没有个人关注那个DONE按钮。
更新:
我在这里添加了观察者
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
这里是观察者
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(beginEditingHandler:) name:UITextFieldTextDidBeginEditingNotification object:nil];
这是我管理辅助功能项目的方式
- (void)beginEditingHandler:(NSNotification *)notification {
UIResponder *responder = notification.object;
IQToolbar *inputAccessoryView = responder.inputAccessoryView;
if (inputAccessoryView) {
if ([inputAccessoryView isKindOfClass:[IQToolbar class]]){
NSMutableArray *arrAccessibilityItems = [[NSMutableArray alloc]init];
if(inputAccessoryView.previousBarButton){
if(!inputAccessoryView.previousBarButton)
[arrAccessibilityItems addObject:inputAccessoryView.previousBarButton];
}
if(inputAccessoryView.nextBarButton){
if(!inputAccessoryView.nextBarButton.isHidden)
[arrAccessibilityItems addObject:inputAccessoryView.nextBarButton];
}
if(inputAccessoryView.titleBarButton){
IQTitleBarButtonItem *titleBtn= inputAccessoryView.titleBarButton;
if(titleBtn.title.length>0){
[arrAccessibilityItems addObject:inputAccessoryView.titleBarButton];
}
}
if(inputAccessoryView.doneBarButton){
[arrAccessibilityItems addObject:inputAccessoryView.nextBarButton];
}
[inputAccessoryView setAccessibilityElements:arrAccessibilityItems];
}
}
}
问题是它是作为整个工具栏而不是逐个栏项目读出的。
- (void)beginEditingHandler:(NSNotification *)notification {
UIResponder *responder = notification.object;
IQToolbar *inputAccessoryView = responder.inputAccessoryView;
if (inputAccessoryView) {
if ([inputAccessoryView isKindOfClass:[IQToolbar class]]) {
// Clear any previous accessibility elements
[inputAccessoryView setAccessibilityElements:nil];
if (inputAccessoryView.previousBarButton) {
inputAccessoryView.previousBarButton.isAccessibilityElement = YES;
inputAccessoryView.previousBarButton.accessibilityLabel = @"Previous"; // Set an appropriate label
// Add the previous button to the accessibility elements
[inputAccessoryView addAccessibilityElement:inputAccessoryView.previousBarButton];
}
if (inputAccessoryView.nextBarButton && !inputAccessoryView.nextBarButton.isHidden) {
inputAccessoryView.nextBarButton.isAccessibilityElement = YES;
inputAccessoryView.nextBarButton.accessibilityLabel = @"Next"; // Set an appropriate label
// Add the next button to the accessibility elements
[inputAccessoryView addAccessibilityElement:inputAccessoryView.nextBarButton];
}
if (inputAccessoryView.titleBarButton && inputAccessoryView.titleBarButton.title.length > 0) {
inputAccessoryView.titleBarButton.isAccessibilityElement = YES;
inputAccessoryView.titleBarButton.accessibilityLabel = inputAccessoryView.titleBarButton.title; // Set an appropriate label
// Add the title button to the accessibility elements
[inputAccessoryView addAccessibilityElement:inputAccessoryView.titleBarButton];
}
if (inputAccessoryView.doneBarButton) {
inputAccessoryView.doneBarButton.isAccessibilityElement = YES;
inputAccessoryView.doneBarButton.accessibilityLabel = @"Done"; // Set an appropriate label
// Add the done button to the accessibility elements
[inputAccessoryView addAccessibilityElement:inputAccessoryView.doneBarButton];
}
}
}
}