自定义UITableViewCell可访问性

Swa*_*ilN 8 iphone objective-c uitableview ios

如何单独设置UITableViewCells子视图的可访问性.
它不应该作为完整的单元格访问?

Ani*_*pta 11

如果您的tableview单元格仅包含文本,则启用单元格的可访问性将会读取整个单元格.如果您有其他对象和按钮,建议使用子类UITableViewCell并覆盖该-accessibilityElements方法以返回所有可访问的元素.

一些代码:

#import "CustomCell.h"

@implementation CustomCell

- (void)awakeFromNib
{
    [super awakeFromNib];
    self.accessibilityElements = @[self.view1, self.label, self.imageView];
}
Run Code Online (Sandbox Code Playgroud)

以下帖子可能有所帮助

http://cocoacaffeine.wordpress.com/2013/11/29/little-tricks-of-accessibility/


Mum*_*ain 6

为了回答@ma11hew28,这是另一种方法,可以节省一些代码行,

斯威夫特 5

class ServiceTableViewCell: UITableViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.selectionStyle = .none
        self.isAccessibilityElement = false //not allowing accessibility for the cell itself
        self.accessibilityElements = [mySubview1!, mySubview2!, mySubview3!] // but allowing accessibility in the cell's subviews
    }
}
Run Code Online (Sandbox Code Playgroud)


ma1*_*w28 5

在中使该单元不可访问,并且您的子视图也可访问tableView(_:cellForRowAt:)

isAccessibilityElement = false
mySubview1.isAccessibilityElement = true
mySubview2.isAccessibilityElement = true
mySubview3.isAccessibilityElement = true
Run Code Online (Sandbox Code Playgroud)

我也一直坚持这一点,因为我(试图提高效率)将以上内容放入自定义单元格的init(style:reuseIdentifier:)方法中。但是,这没有用,可能是因为UITableView在初始化每个单元格后重置了所有内容。

相关:适用于iOS的可访问性编程指南:增强表视图的可访问性