如何以编程方式复制 UIView 并保存 accessibilityId?

How to make copy UIView and save accessibilityId programmatically?

我使用:

extension UIView {
    func copyView<T: UIView>() -> T {
        return NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self)) as! T
    }
}

但是我的副本丢失了辅助功能标识符。

copyView.accessibilityIdentifier == nil

如何保存?

这似乎是一个 Apple 错误。你真的应该在 Apple Bug Reporter.

上报告这个

也就是说,您可以按如下方式解决此问题:

extension UIView {
    func copyView<T: UIView>() -> T {
        let copy = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self)) as! T
        copy.accessibilityIdentifier = accessibilityIdentifier
        return copy
    }
}