在VoiceOver下测试时,我的代码在iOS 5下运行良好.我的代码将集合MKPinAnnotationViews到MKMapView.我在iOS 6中的问题是,在到达我添加的引脚之前,画外音会读取街道名称和其他POI(可能很多).有没有办法重新排序这些?我似乎无法找到Apple关于如何为iOS 6的地图添加引脚的任何建议.
谢谢!
最近,我一直在努力使我的应用程序与 VoiceOver 一起运行良好。一般来说,它简单明了,但我想模仿系统应用程序的一些行为,而且我很难找到 API 来进行设置。
特别是,我有兴趣向 VoiceOver“转子”添加几个选项,并在用户增加和减少值时响应它们。然而,尽管像 Apple 的 Maps 应用程序这样的应用程序向转子添加了项目并且能够做出响应,但我不知道如何为我的应用程序这样做。
有没有人成功地做到这一点?如果是这样,如何?
我有一个带有单元格的表格,用户可以滑动以将其标记为"已完成".我试图通过实现accessbilityScroll方法使用VoiceOver来访问它.
这工作正常,但我无法弄清楚当用户滚动时哪个单元格具有焦点.
我只找到有关如何改变焦点的信息.
我试图从 VoiceOver 隐藏我的应用程序中的几个元素,以便屏幕阅读器不会大声朗读它们。在 iOS 上,我设置isAccessibilityElement为NO,但这对 OSX 没有影响。从 VoiceOver 隐藏元素的正确方法是什么?
例如,我在视图中包含了一系列标签,如果它们被 VoiceOver 单独朗读,则这些标签毫无意义。我想accessibilityLabel在容器视图上设置来描述嵌套在其中的所有标签。但是如果我这样做,里面的标签仍然会被 VoiceOver 读出。
我在UITextField的右视图中添加了两个UIButton,但是voiceOver看不到它们(它“仅读取”包含的视图)。我已经将右视图的accessibilityElementsHidden设置为“否”。我不明白我在做什么错...
编辑:我子类化UITextField,可以与此相关吗?
启用 Voice Over 后,滚动视图会在视图出现后一秒重置它们的预设 contentOffset。它发生在 iOS 8.4 设备上,9.0 无法重现。看起来一些内部UIScrollViewAccessibility代码setContent:在聚焦时强制滚动视图为零。没有找到任何方法来逃避这一点。
有什么想法吗?
相关代码示例说明了该错误。只需创建一个带有集合视图的视图,创建一个重用 id 为“Cell”的单元格并在其上放置一个标签。
@interface ViewController () <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
@property (nonatomic, weak) IBOutlet UICollectionView *collectionView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.collectionView.backgroundColor = [UIColor clearColor];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.collectionView reloadData];
//set there 4 seconds and bug will disappear
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:5 inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:NO];
});
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"Why you scroll second time?"); …Run Code Online (Sandbox Code Playgroud) 在当前的用户界面中,某些标签旁边有一个帮助提示按钮,单击该按钮可解释标签所引用内容的详细信息。这样,VoiceOver会将这两个项目标识为单独的可访问性项目。
但是,当使用可访问性时,我们希望可以在标签本身中完成所有操作。这样,当标签聚焦时,用户将在此处“帐户值20美元(accessibilityLabel),连按两次以获取帮助(accessibilityHint)”。
但是,与按钮不同,标签没有与之关联的动作,因此我不确定如何连线实际触发可访问性手势以表明我想做某事。
除了将所有标签转换为按钮之外,还有什么方法可以监听标签上的可访问性“操作”方法?
我当前的解决方法是仅使“帮助提示”按钮可访问,然后将所有相关信息移至它们的可访问性属性,但这看起来像是代码异味,因为开发人员在更新代码时很容易错过它。
通常,VoiceOver正确读取加载的网页内容,WKWebView并且可以读取按钮和链接。
但是,?当我说WKWebView对UITableViewCell,并显示在UITableVIew,VoiceOver无法识别它。
根据苹果的tableview文档,为了让每个内容都分别UITableViewCell被识别VoiceOver,需要将isAccessibilityElementcell设置为false isAccessibilityElement,view设置为true。
但如果isAccesibilityElementofWKWebView设置为 true,视图本身是聚焦的,我们无法识别内部网页内容。
此外,VoiceOver在加载 Web 内容后第一次启用时,它执行了可以识别 Web 内容的奇怪行为。
怀疑是VoiceOver内容识别时序的问题,我试了一下运行
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)
或者
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
Run Code Online (Sandbox Code Playgroud)
加载网页内容后,却没有得到好的结果。
是否有处理内容的一个好办法wkwebview上tableView到VoiceOver?
VoiceOver 焦点不会超出导航项目。我向右滑动,但焦点被困在导航项的最后一个元素上。可能它应该移动到 ViewController 视图的第一个元素。我设置了accessibilityElements并使每个元素isAccessibilityElement = true。如果我尝试点击 ViewController 的任何元素,则会将焦点困在状态栏上。
我有以下标题
<h1>ADD MONEY</h1>
Run Code Online (Sandbox Code Playgroud)
它被 VoiceOver 读为
加钱
而如果我将文本更改为小写,它将正确读取为“加钱”。你有什么建议吗?我已经尝试过使用aria-labelledby没有运气!
voiceover ×10
ios ×8
swift ×3
objective-c ×2
html ×1
ios6-maps ×1
macos ×1
mapkit ×1
scrollview ×1
uilabel ×1
uitextfield ×1
wai-aria ×1