Search code examples
xcodeuitextviewswiftinitializer

Designated Initializer of UITextView


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.


Solution

  • 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.