Swift 4.2类型'NSAttributedString.Key'没有成员'accessibilitySpeechPitch'

时间:2018-09-30 21:18:24

标签: ios swift xcode10 uiaccessibility swift4.2

我正在将一些代码从Swift 4.0迁移到4.2,并且在使用UIAccessibilitySpeechAttributePitch时遇到了麻烦。在我的Swift 4.0文件中,我使用了:

NSAttributedStringKey(rawValue: UIAccessibilitySpeechAttributePitch)

即使在Swift 4.0中,由于某种原因,我也无法将其直接用作NSAttributedStringKey.accessibilitySpeechPitch,但是我可以通过使用原始值进行初始化来解决此问题。我似乎无法在Swift 4.2中做到这一点。

如果我尝试

NSAttributedString.Key(rawValue: UIAccessibilitySpeechAttributePitch)

在Swift 4.2中,我得到

  

无效的初始化程序调用,其类型与“ NSAttributedString.Key”相同   参数

因此显然UIAccessibilitySpeechAttributePitch被识别为NSAttributedString.Key。 但是,如果直接使用它,则会得到:

  

'UIAccessibilitySpeechAttributePitch'已重命名为   'NSAttributedString.Key.accessibilitySpeechPitch'

建议的修补程序

  

将“ UIAccessibilitySpeechAttributePitch”替换为   'NSAttributedString.Key.accessibilitySpeechPitch'

因此,我单击“修复”按钮将其更改为NSAttributedString.Key.accessibilitySpeechPitch,然后得到

  

类型'NSAttributedString.Key'没有成员'accessibilitySpeechPitch'

如果在未首先将其更改为UIAccessibilitySpeechAttributePitch的情况下命令单击NSAttributedString.Key.accessibilitySpeechPitch,则会在UIKit的UIAccessibilityConstants中获得以下声明:

extension NSAttributedString.Key {
//other stuff
    @available(iOS 7.0, *)
    public static let accessibilitySpeechPitch: NSAttributedString.Key
//other stuff
}

因此,它显然存在,但是,我的代码如何使用它?除了UIKit,是否还需要为可访问性常量导入其他内容?

编辑:我的实际代码(只是更改了一些变量名)如下:

static let someColour=#colorLiteral(red: 1, green: 0.5763723254, blue: 0, alpha: 0.5)
static let attributes=[
    NSAttributedString.Key.backgroundColor: someColour,
    NSAttributedString.Key.strokeWidth: -3.0,
    NSAttributedString.Key.accessibilitySpeechPitch: 1.3
    ]
    as [NSAttributedString.Key : Any]

我尝试过清洁建筑。我正在使用Xcode版本10.0(10A255)

1 个答案:

答案 0 :(得分:0)

尝试

improt UIKit

由于UIKit -> NSAttribute文件中存在accessibilitySpeechPitch,因此您可以在extension NSAttributedString.Key中看到它

有效