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

Posted

技术标签:

【中文标题】带有自定义 UI 按钮的 iOS 键盘的辅助功能选项卡顺序【英文标题】:Accessibility tab order for iOS keyboard with custom UI button 【发布时间】:2018-04-12 21:48:15 【问题描述】:

我正在开发一个 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">

这是(简化的)本机 sn-p:

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

任何帮助将不胜感激。谢谢!

【问题讨论】:

所以你得到了本机数字键盘,然后覆盖一个'。' UIButton 放在上面了吗?是“。”无法滑动到的按钮? @slugolicious 是的。我无法滑动到具有自定义 UIButton 的子视图。 【参考方案1】:

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

最简单的测试方法是添加

[decimalButton setIsAccessibilityElement:YES];

到上面的本机代码。

【讨论】:

以上是关于带有自定义 UI 按钮的 iOS 键盘的辅助功能选项卡顺序的主要内容,如果未能解决你的问题,请参考以下文章

iOS 带有振动的自定义键盘

C ++ MFC,带有复选框的自定义网格,单选按钮[关闭]

在 iOS 中有一个自定义数字键盘来拨打号码

element-ui 树型控件自定义图标和实现单选节点功能

scss 创建自定义键盘访问单选按钮

带有单选按钮 iOS 的 UIAlertView [关闭]