ios 如何跳过一个条形按钮项上的辅助功能焦点,并将焦点保持在工具栏的其他条形按钮项上

8hhllhi2  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(75)

我有一个工具栏,我想跳过标题按钮时,辅助功能打开。
我可以使用accessibilityElementsHidden跳过整个工具栏辅助功能
但我只是想跳过标题栏按钮的辅助功能焦点。
我试着单独禁用标题按钮的可访问性。
但没用。
所以我设置了ObsibilityElements属性,它跳过了标题栏,阅读了右侧的DONE按钮。但是在那个DONE按钮上根本没有单独的焦点。当我使用ObsibilityElements时,单个栏按钮项的焦点丢失了。
更新:
我在这里添加了一个观察者

- (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];

        }
    }
}


问题是这个读出作为整个工具栏,而不是一个酒吧项目的酒吧项目。

pn9klfpd

pn9klfpd1#

iQcss设置标题按钮如下:

@objc open var titleBarButton: IQTitleBarButtonItem {
        get {
            if privateTitleBarButton == nil {
                privateTitleBarButton = IQTitleBarButtonItem(title: nil)
                privateTitleBarButton?.accessibilityLabel = "Title"
                privateTitleBarButton?.accessibilityIdentifier = privateTitleBarButton?.accessibilityLabel
            }
            return privateTitleBarButton!
        }

        set (newValue) {
            privateTitleBarButton = newValue
        }
    }

字符串
你必须子类化IQToolbar并覆盖titleBarButton,如下所示:

open class MyToolbar: IQToolbar {
    open var titleBarButton: IQTitleBarButtonItem {
        get {
            let titleBarButton = super.titleBarButton
            titleBarButton.customView.subviews.first?.isAccessibilityElement = false
            return titleBarButton
        }
        set (newValue) {
            super.titleBarButton = newValue
        }
    }
}

相关问题