TableViewCell VoiceOver 辅助功能中的 UIButton

Posted

技术标签:

【中文标题】TableViewCell VoiceOver 辅助功能中的 UIButton【英文标题】:UIButton in TableViewCell VoiceOver Accessibility 【发布时间】:2013-08-06 17:44:58 【问题描述】:

已解决:

我按照更新中的链接进行操作,现在 UITableViewCell 的按钮可用于 VoiceOver。

情况:

我正在为应用实现 VoiceOver 辅助功能。 我有一个自定义 UITableViewCell (下面的代码),可以通过用户单击单元格在展开和正常视觉(选择与未选择)之间切换。与扩展有关的一切都根据我的设计进行。 在自定义 UITableViewCell 中,我有一个 UILabel 和 2 个 UIButton。 VoiceOver 辅助功能可以识别 UILabel,但忽略 UIButton。

问题:

我需要 VoiceOver 辅助功能来识别 UIButton 并阅读它们的辅助功能标签和/或提示。

代码:

-(id) init
     ...
    _leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
    _rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [_leftButton.titleLabel setFont:[UIFont fontWithName:FONT size:12]];
    [_rightButton.titleLabel setFont:[UIFont fontWithName:FONT size:12]];
    [_leftButton addTarget:self action:@selector(clickButtonLeft:) forControlEvents:UIControlEventTouchUpInside];
    [_rightButton addTarget:self action:@selector(clickButtonRight:) forControlEvents:UIControlEventTouchUpInside];

    [_leftButton setFrame:CGRectMake(CELL_DETAILS_SIDE_PADDING,
                                 CELL_PADDING + CELL_NORMAL_HEIGHT + CELL_EXPANDED_PADDING - CELL_BUTTON_HEIGHT-7,
                                 70, CELL_BUTTON_HEIGHT)];
    [_leftButton setImage:[UIImage imageNamed:@"giftIcon.png"] forState:UIControlStateNormal];
    [_leftButton setTitle:@"  Gift This" forState:UIControlStateNormal];

    [_rightButton setFrame:CGRectMake(self.frame.size.width - 140 - CELL_DETAILS_SIDE_PADDING,
                                  CELL_PADDING + CELL_NORMAL_HEIGHT + CELL_EXPANDED_PADDING - CELL_BUTTON_HEIGHT-7,
                                  140, CELL_BUTTON_HEIGHT)];
    [_rightButton setImage:[UIImage imageNamed:@"buyPack.png"] forState:UIControlStateNormal];
    [_rightButton setTitle:@"  Buy For Yourself" forState:UIControlStateNormal];

    _description = [[UILabel alloc] initWithFrame:CGRectMake(CELL_DETAILS_SIDE_PADDING, CELL_PADDING+CELL_NORMAL_HEIGHT+10,
                                                         self.frame.size.width - 2*CELL_DETAILS_SIDE_PADDING, 50)];
    _description.numberOfLines = 0;
    [_description setLineBreakMode:NSLineBreakByWordWrapping];
    [_description setFont:[UIFont fontWithName:FONT size:13]];
    [_description setBackgroundColor:[UIColor clearColor]];
    [_description setTextColor:[UIColor whiteColor]];


- (void) expandCell

    ...
    [self addSubview:_description];
    [self addSubview:_leftButton];
    [self addSubview:_rightButton];

更新:

看起来here 所描述的就是要走的路。

【问题讨论】:

【参考方案1】:

另一个堆栈溢出问题有答案。按照答案中的教程进行操作。

stack overflow answer source

【讨论】:

以上是关于TableViewCell VoiceOver 辅助功能中的 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

带有 VoiceOver 的持久弹出框

在 iOS 上模拟 VoiceOver 辅助功能点击

VoiceOver:如何在计算器中实现类似于键的按钮

是否可以在 iOS 应用中启用或禁用 VoiceOver?

如何为 tableview 上的 webview 内容启用 VoiceOver

SwiftUI Slider 使用 VoiceOver 不解释双击