Des*_*Des 6 accessibility tableview ios voiceover uiaccessibility
启用VoiceOver后,用户可以使用3指滑动手势滚动TableView.VoiceOver口头向用户宣布一个短语,表示他们在桌面视图上的位置,即可见的行,例如"第1行到第4行".
我想覆盖这个口头提示并获得画外音,向用户宣布其他内容.
Epo*_*ese 22
使用UIScrollViewAccessibilityDelegate并实现方法-accessibilityScrollStatusForScrollView:
例
- (NSString *)accessibilityScrollStatusForScrollView:(UIScrollView *)scrollView
{
return @"Your text";
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ist 10
您不能仅更改消息.您将不得不覆盖accessibilityScroll:并进行滚动,然后发布滚动公告(至少我不知道其他任何方式).虽然这不是很难.
由于您有表格视图,因此可以使用滚动到某一行scrollToRowAtIndexPath:atScrollPosition:animated:.您可以确定一个辅助功能元素是X行数.在这种情况下,您将从表视图中获取可见行集,并将X添加或删除到最后一个或第一个单元格的行(取决于滚动是向上还是向下).
最后,要宣布表视图滚动,您应该发布"页面滚动"通知并传递要读取的文本.最后你应该回答YES说你处理了滚动(如果你没有,那么事件将继续传播).
一个基本的实现可能看起来像这样(我做了一些假设,可能会根据你的代码改变,比如只有一个部分):
- (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction
{
BOOL isScrollingUp = NO;
switch (direction) {
case UIAccessibilityScrollDirectionUp: {
isScrollingUp = YES;
} break;
case UIAccessibilityScrollDirectionDown: {
isScrollingUp = NO;
} break;
default:
// These cases are not handled
return NO;
}
NSInteger numberOfCellsToScroll = 5; // Any number you'd like
NSInteger newRow = -1;
if (isScrollingUp) {
newRow = [self.tableView indexPathsForVisibleRows][0].row - numberOfCellsToScroll;
} else {
newRow = [[self.tableView indexPathsForVisibleRows] lastObject].row + numberOfCellsToScroll;
}
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:newRow inSection:0]
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
UIAccessibilityPostNotification(UIAccessibilityPageScrolledNotification,
@"YOUR CUSTOM TEXT FOR THE SCROLL HERE");
return YES; // We handled the scroll
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4248 次 |
| 最近记录: |