辅助功能:将焦点移动到UITableViewController中tableView中的第一个单元格

时间:2012-11-14 11:04:45

标签: ios uitableview accessibility navigationcontroller

我有一个主窗口,它有两个UITableViewControllers。在第一个tableViewController(左窗格)中选择单元格时,右侧的tableViewContainer将被填充。在Voice over模式中,我希望当第一个tableViewController中的单元格被选中时,secondViewController中的第一个单元格会获得焦点,以便从那里开始轻弹顺序。请注意,我已经尝试了以下两种方法:

1)制作第二个视图控制器的第一个单元格,即第一个响应者。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{          
    UITableViewCell *outCell =(UITableCellView*)  [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (indexPath.row == 0)
    {
        [outCell becomeFirstResponder];
    }
}

2)我还尝试在将单元格作为第一个辅助功能项目的情况下发布布局更改通知。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{          
    UITableViewCell *outCell =(UITableCellView*)  [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

     if (indexPath.row == 0)
     {
         UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, outCell);
     }
}

以上方法均无效。知道我还能尝试什么或上述方法有什么问题?

请注意:我已阅读View控制器的文档(https://developer.apple.com/LIBRARY/IOS/#featuredarticles/ViewControllerPGforiPhoneOS/Accessibility/AccessibilityfromtheViewControllersPerspective.html - 将VoiceOver光标移动到特定元素)。尝试在我的示例中发布LayoutChanged通知以及ScreenChangedNotifications,并尝试使用示例代码(ListAdder - http://developer.apple.com/library/ios/#samplecode/ListAdder/Introduction/Intro.html,它也像我们一样使用NavigationController),但上面的内容甚至不能用于示例。 / p>

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

我通过发布屏幕更改通知解决了这个问题。该调用的第二个参数是表视图的视图,您要选择第一个单元格。

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,[[self nextTableViewController] view];