无法分配UITextInputTraits的属性

时间:2019-03-06 14:51:09

标签: swift uitextview protocols uitextinputtraits

当访问UITextView作为符合UITextInputTraits的对象时遇到奇怪的编译错误:

protocol MyEditingView:UITextInputTraits where Self: UIView {
}

extension UITextView:MyEditingView {
}

class SomeClass {
  var editingView:MyEditingView = UITextView()
  func someFunc() {
    editingView.autocorrectionType = .no
  }
}

“无法分配给属性:'自身'是不可变的”

但是如果在协议中显式声明了属性,则不 从UITextInputTraits继承,它已成功编译。

protocol MyEditingView where Self: UIView {
  var autocorrectionType: UITextAutocorrectionType { get set }
}

并且属性声明与UITextInputTraits中的相同。

Swift 4.2,XCode 10.1

1 个答案:

答案 0 :(得分:1)

UITextInputTraits中的

autocorrectionType属性是可选,但是当您在 MyEditingView 中明确声明时,它不再具有可选属性。 我尝试在MyEditingView中将其设置为可选属性,并遇到相同的编译错误。