【问题标题】:How can I disable auto-correct on an input box?如何在输入框上禁用自动更正?
【发布时间】:2015-05-14 22:57:12
【问题描述】:

我想在我的应用程序的输入框中禁用自动更正。我找到了一个如下所示的objective-c解决方案:

    UITextField* f = [[UITextField alloc] init];
    f.autocorrectionType = UITextAutocorrectionTypeNo;

我试过这样实现它,但它不起作用:

    // in my viewController
    @IBOutlet weak var webAddressInput: UITextField!
    // in my viewDidLoad
    webAddressInput.autocorrectionType = UITextAutocorrectionTypeNo

如何在 Swift 中禁用输入框的自动更正功能?

【问题讨论】:

  • 它不起作用,因为那不是 Swift
  • 非常有帮助的马特,谢谢!
  • 对不起,如果我太含糊了。术语 UITextAutocorrectionTypeNo 不是 Swift。您需要将代码翻译成 Swift。
  • 抱歉,我以为您只是不知道在哪里寻找问题的根源。 - 在我的书中,查看该主题的最佳位置是附录,其中讨论了如何将 Objective-C 枚举转换为 Swift 枚举/结构:apeth.com/swiftBook/apa.html#_c_enums
  • 我现在看看。谢谢@matt

标签: swift uitextfield autocorrect


【解决方案1】:

Swift 对枚举的处理需要一点时间来适应。如果您在文档中搜索 UITextAutocorrectionTypeNo,它会引导您找到伞形类型 UITextAutocorrectionType。

该类型的 Swift 定义是

enum UITextAutocorrectionType : Int {
    case Default
    case No
    case Yes
}

在 Swift 中你使用type.value,所以这是

UITextAutocorrectionType.No

你的行是

webAddressInput.autocorrectionType = UITextAutocorrectionType.No

(虽然,查看文档,我在 UITextField 上没有看到 autocorrectionType 属性)

【讨论】:

  • 谢谢邓肯!现在我明白@matt 的翻译是什么意思了。我可能可以将 type.value 全面应用于objective-c。甜蜜。
  • 是的。这似乎是在 Swift 中从 Objective-C API 定义枚举的一般模式。每个枚举的名称往往是 LongCamelCasePrefixWithUniqueEnding,而在 Swift 中,枚举类型是第一个公共部分(LongCamelCasePrefix),具体枚举是唯一的第二部分(WithUniqueEnding),因此具体枚举写为 LongCamelCasePrefix.WithUniqueEnding。我见过一些 Objective-C 枚举,其中整个枚举组的类型与前缀相同,而有些则不是。
  • 哇,你实际上只是为我做了一些点击。我是 Swift 的新手,我一直在努力解释文档。当您在答案中解释枚举时,您又向我展示了如何处理我在文档中找到的内容。再次感谢。 :)
猜你喜欢
  • 1970-01-01
  • 2016-06-01
  • 2019-06-21
  • 1970-01-01
  • 2016-01-30
  • 2011-10-14
  • 2020-07-13
  • 2020-03-02
  • 2014-08-25
相关资源
最近更新 更多