UITextView的指定初始化程序

Bri*_*acy 6 xcode initializer uitextview swift

当我UITextView在Xcode 6 Beta中创建一个新的子类时,会自动提供以下代码.

import UIKit

class TerminalView: UITextView {

    init(frame: CGRect) {
        super.init(frame: frame)
        // Initialization code
    }
}
Run Code Online (Sandbox Code Playgroud)

以前的代码(完全由Xcode提供,没有删除)会产生以下错误.

Must call a designated initializer of the superclass 'UITextView'

据我所知,在指定的子类UIView-initWithFrame:(或斯威夫特,init(frame:)如果是这样的话,为什么不通过Xcode中导致错误提供的代码?我已经添加任何新的实例变量的类,所以什么否则必须初始化.

Kri*_*lci 13

似乎现在唯一可用的初始化程序是:

super.init(frame: CGRect, textContainer: NSTextContainer?)
Run Code Online (Sandbox Code Playgroud)

可以调用

super.init(frame: CGRect.zero, textContainer: nil)
Run Code Online (Sandbox Code Playgroud)

这很可能是初始测试版中的一个错误,将在即将发布的测试版中修复.


Fat*_*tie 9

2020 年:

class SpecialText: UITextView {
    
    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
        common()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        common()
    }
    
    private func common() {
        backgroundColor = .yellow
        font = .systemFont(ofSize: 26)
        textColor = .green
    }
}
Run Code Online (Sandbox Code Playgroud)