具有自定义UI按钮的iOS键盘的辅助功能选项卡顺序

时间:2018-04-12 21:48:16

标签: javascript ios objective-c accessibility uiaccessibility

我正在使用一个带有输入文本字段的屏幕的cordova应用程序,该字段需要十进制iOS键盘。

我无法找到一种自然的方式来显示来自javascript代码的iOS键盘(只有数字和句点)。

因此,我使用了一个cordova插件(https://github.com/mrchandoo/cordova-plugin-decimal-keyboard),它使用输入属性pattern =“[0-9] *”来显示数字键盘(没有小数)并创建一个自定义UI按钮,并将其置于空旷的空间。

它实际上对我来说非常合适,直到我开始测试组件的可访问性。

当您在VoiceOver模式中进行标签(即滑动)时,无法访问该按钮。

有什么方法可以以某种方式操纵iOS的Tab键顺序并插入我的辅助功能元素?

这是(简化的)混合代码:<input type="text" pattern="[0-9]*" decimal="true">

这是(简化的)原生代码段:

decimalButton = [UIButton buttonWithType: UIButtonTypeCustom];
[self setDecimalChar];
[decimalButton setTitleColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0] forState:UIControlStateNormal];
decimalButton.titleLabel.font = [UIFont systemFontOfSize:40.0];
[decimalButton addTarget:self action:@selector(buttonPressed:)
        forControlEvents:UIControlEventTouchUpInside];
[decimalButton addTarget:self action:@selector(buttonPressCancel:)
        forControlEvents:UIControlEventTouchUpOutside];


decimalButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[decimalButton setTitleEdgeInsets:UIEdgeInsetsMake(-20.0f, 0.0f, 0.0f, 0.0f)];
[decimalButton setBackgroundColor: [UIColor colorWithRed:210/255.0 green:213/255.0 blue:218/255.0 alpha:1.0]];
// locate keyboard view
UIWindow* tempWindow = nil;
NSArray* openWindows = [[UIApplication sharedApplication] windows];

for(UIWindow* object in openWindows){
    if([[object description] hasPrefix:@"<UIRemoteKeyboardWindow"] == YES){
        tempWindow = object;
    }
}

UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
    keyboard = [tempWindow.subviews objectAtIndex:i];

    [self listSubviewsOfView: keyboard];
    decimalButton.frame = cgButton;
    [ui addSubview:decimalButton];   

任何帮助都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

首先想到的是,自定义小数点按钮可能不会自动设置为辅助功能元素,这意味着VoiceOver将无法与其进行交互。

最简单的测试方法是添加

[decimalButton setIsAccessibilityElement:YES];

到上面的原生代码。