我正在将一些代码从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)
答案 0 :(得分:0)
尝试
improt UIKit
由于UIKit -> NSAttribute
文件中存在accessibilitySpeechPitch,因此您可以在extension NSAttributedString.Key
中看到它
有效