- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到当 BarButtonItems 被放置在 View 的底部栏中时,标准画外音行为存在一些问题。
在测试应用程序中,我制作了以下简单 View
使用以下代码,我将更新所有 3 个文本元素,以便它们每秒计数。
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *testLabel;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *testBarButtonItem;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *testBottomBarItem;
@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic) NSInteger count;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.count = 0;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
// run the timer for the common modes so it's not interrupted with scrolling - should be ticked in pretty much all modes now
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
self.testLabel.accessibilityTraits |= UIAccessibilityTraitUpdatesFrequently;
self.testBarButtonItem.accessibilityTraits |= UIAccessibilityTraitUpdatesFrequently;
self.testBottomBarItem.accessibilityTraits |= UIAccessibilityTraitUpdatesFrequently;
}
-(void)updateTimer:(NSTimer*)theTimer
{
self.testLabel.text = [NSString stringWithFormat:@"Label with value %d", (int)self.count];
self.testBarButtonItem.title = [NSString stringWithFormat:@"Top Item with title %d", (int)self.count];
self.testBottomBarItem.title = [NSString stringWithFormat:@"Bottom Item with title %d", (int)self.count];
self.count++;
}
在启用 Voice Over 的情况下在我的 iPhone 6+ 上测试此应用,出现以下情况
我认为导航错误可能是 iOS 8.4 中的新错误,因为我在我的主应用程序中没有注意到它,我已经进行了很长时间的语音测试,但我可能只是错过了它。
我在自己的应用程序中使用 UIAccessibilityTraitUpdatesFrequently 并没有取得多大成功,但我看到其他应用程序似乎可以正确使用它。因此,如果有人能指出我做错的事情,那就太好了。否则我想我会记录一个雷达错误。
作为引用,我现在将整个项目作为 zip 文件提供下载 here
这里有一个关于这个错误的视频
最佳答案
您似乎误解了 UIAccessibilityTraitUpdatesFrequently
的作用。它不能确保您的内容在动态变化时被读出。它的存在是为了确保过于冗长的内容(如计时器)不会在每次更新时都被读出。例如,如果您要将焦点放在每秒更新一次的计时器上。 VoiceOver 会读出
12个3个4个...
但是,让我们说这是一个时间。所以它必须读出:
1 小时 20 分 55 秒1小时20分56秒...
但是,当它读完整个第一个公告“... 55 秒”时,计时器现在实际读数为 1:21:00。然而它仍然读出“... 56秒”,然后继续读出“... 57秒”,同时计时器和实际通知越来越不同步。
如果 VoiceOver 没有关注它,没有什么会自动读出自动更新的内容。这会造成严重破坏和许多可访问性问题。开发人员可以通过适当发布以下三个辅助功能通知来通知 VoiceOver 动态更改:
UIAccessibilityLayoutChangedNotification
UIAccessibilityScreenChangedNotification
UIAccessibilityAnnouncementNotification
请注意,这些行为在您的典型测试环境中有点不稳定。特别是我发现,你想确保在打开你的应用程序之前打开了 VoiceOver。在您的应用程序启动时使用快速切换快捷方式是在通知系统中阻止 VoiceOver 的好方法。更好的方法是打开 VoiceOver,重新启动手机,并在测试时保持打开状态。
关于ios - BottomBar BarButtonItem Voice Over 辅助功能已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195503/
循环不起作用,我想就是这样,也许 list[i].removeChild(list[i]);我想删除 lt 列表类。 function removeDone () { var lista = do
我正在制作一个java程序,它能够使用他们的api将(主要是mp4)文件上传到主机openload.co,你可以找到here . 我的程序可以上传 mp4 视频,但无法播放。当我下载以前上传的视频并通
我在服务器端使用 jquery-file-upload 和 Python-Flask。每当我上传 100mb 以上的大文件时,上传的版本比原始版本稍大并且无法打开(已损坏)。我对 10mb block
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我有一个按钮,它是我的 Magento 主题中提供的代码的一部分,根据日期/时间戳,我没有无意中编辑它。我确信它在某些时候是有效的,但回顾一下上周我的源代码控制,我似乎无法找出哪里出了问题。 这是按钮
我有一个将一些数据写入新文件的简单函数。它可以工作,并且文件已写入,但在 MSVS Express 2013 中调试时出现上述错误。 void writeSpecToFile(const char *
我试图包含我的应用程序的国际化,并且仅出于测试目的,我在文件 Localized.string 中添加了一行简单的代码。 这是我的整个文件: "Test locale" = "Test locale"
这是代码: console.log(234, document.links); console.log(235, document.links.length); 输出显示数组中有值,但返回 0。 这是
我在尝试使用 ASP.NET MVC3 的 Ajax.BeginForm 方法时遇到了一个奇怪的问题。表单通过正确的操作属性在页面上正确呈现。但是,当提交表单时,“OnFailure”事件返回“Not
我是 10 年级的学生,我在 APCS 的最终项目是制作一个游戏/应用程序并提交代码、运行视频和书面回复。我的问题是整个类(class)都是使用 Code.org 的 AppLab 进行教学的,并且
我正在使用带有 Microsoft auth 的 azure webapp。几个月来一直工作良好。 然而今天它坏了。login.microsoftonline.com 页面因 css 和 js 加载错
我遇到了一个奇怪的问题。直到几分钟前才出现问题。在不对 less/css 文件进行任何更改的情况下(从不),引导按钮和导航栏标题的外观突然发生了变化。在第一张图片上,您可以看到按钮应该是什么样子,在第
我正在开发一个用于核心转储处理的工具。使用 sysctl 我将其设置为获取工具输入的核心转储。一切都运转良好。但今天我面临着(我不知道为什么)coredump 损坏的情况。当我将常规文件设置为核心转储
我对一个我继承但并非最初创建的网站感到非常头疼。几乎所有的样式都是通过一个样式表完成的。问题是自动调整大小不再有效,所有页面现在都以指定的最小宽度显示。随着时间的推移,各种不同的人添加了它,CSS 变
我正在尝试使用 AngularJS 甚至纯 JavaScript 将 HTML 表格转换为 XLSX。 当我使用下面的方法转换为 XLS 时,它的下载正常并且 XLS 文件正在打开。 var blob
需要根帮助导致 vtable 损坏问题(不确定这是否正在发生)。这是代码的非常简化的版本。 class CBase { public: CBase() virtual ~CBase()
一段时间未在 Play 商店中更新我的应用程序后,我尝试使用我的 keystore 对我的一个 APK 进行签名,结果发现 keystore 和别名密码不再起作用。我可以使用此要点重置的 keysto
已安装 XCode 6在 Mavericks .它不运行。将操作系统更新为 Yosemite 10.10 :现在 Xcode.app(通过 *.dmg 安装)启动失败并显示错误消息 “Xcode” i
我有一个在我的应用程序中使用的 plist 文件,我可以对其进行本地化,因此我在我的项目中得到两个条目,一个用于英语,一个用于西类牙语,当我编译运行该应用程序时,它可以工作,但当然在这个阶段内容是相同
我相信这是来自 androidsnippets.org 的 fragment - 为什么它在 Android 2.3 上不起作用?如何解决? 错误 03-05 23:19:17.479: WARN/S
我是一名优秀的程序员,十分优秀!