Designated Initializer of UITextView
Asked Answered
C

2

14

When I create a new subclass of UITextView in the Xcode 6 Beta, the following code is automatically provided.

import UIKit

class TerminalView: UITextView {

    init(frame: CGRect) {
        super.init(frame: frame)
        // Initialization code
    }
}

The previous code (completely provided by Xcode with nothing removed) gives the following error.

Must call a designated initializer of the superclass 'UITextView'

As far as I know, the designated for all subclasses of UIView is -initWithFrame: (or in Swift, init(frame:). If this is the case, why does the code provided by Xcode result in an error? I have added no new instance variables to the class, so nothing else has to be initialized yet.

Ceylon answered 6/6, 2014 at 5:42 Comment(2)
Submitted bug. #17472321 for anyone wanted to check the status.Hitandrun
still not fixedMelbamelborn
M
27

It seems as though the only initializer that works for now is:

super.init(frame: CGRect, textContainer: NSTextContainer?)

which can be called with

super.init(frame: CGRect.zero, textContainer: nil)

This is most likely a bug in the initial beta release and will be fixed in upcoming beta releases.

Memling answered 6/6, 2014 at 5:53 Comment(0)
M
12

For 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
    }
}
Magnesite answered 6/1, 2020 at 23:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.