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

Posted

技术标签:

【中文标题】Swift 4.2 类型“NSAttributedString.Key”没有成员“accessibilitySpeechPitch”【英文标题】:Swift 4.2 Type 'NSAttributedString.Key' has no member 'accessibilitySpeechPitch' 【发布时间】:2018-09-30 21:18:23 【问题描述】:

我正在将一些代码从 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”

如果我在没有先将其更改为 NSAttributedString.Key.accessibilitySpeechPitch 的情况下通过命令单击 UIAccessibilitySpeechAttributePitch,我会在 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)

【问题讨论】:

NSAttributedString.Key.accessibilitySpeechPitch 为我工作。尝试清理并重新构建。 在您尝试使用NSAttributedString.Key.accessibilitySpeechPitch 的上下文中显示您的实际代码。它在 Xcode 10/Swift 4.2 中对我来说很好用。 我添加了我的代码。清洁和建筑没有帮助。 :/ 我在 Xcode 10.0 (10A255) 尝试重启 Xcode。并确保您的项目设置为使用 Swift 4.2。 @Angela 我建议您在缩小问题范围后围绕上一条评论重新提出问题。 【参考方案1】:

尝试

改进 UIKit

因为accessibilitySpeechPitch存在于UIKit -> NSAttribute文件中,所以可以在extension NSAttributedString.Key中看到

成功了

【讨论】:

以上是关于Swift 4.2 类型“NSAttributedString.Key”没有成员“accessibilitySpeechPitch”的主要内容,如果未能解决你的问题,请参考以下文章

多细胞类型swift 4.2

swift 4.2 无法将类型“(_)-> Void”的值转换为预期的参数类型“(()-> Void)?”

使用 PromiseKit 6 在 Swift 4.2 中缓存

Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显

将带有 NSAttributed 字符串的字典保存到 PList 或 NSUserDefaults

将 UITapGestureRecognizer 添加到具有范围的 NSAttributed Text