A set of methods that text views must implement to interact properly with the text input management system.


protocol NSTextInputClient


To create another text view class, you can either subclass NSTextView (and not NSText, for historical reasons), or subclass NSView and implement the NSTextInputClient protocol


Handling Marked Text

func hasMarkedText() -> Bool

Returns a Boolean value indicating whether the receiver has marked text.


func markedRange() -> NSRange

Returns the range of the marked text.


func selectedRange() -> NSRange

Returns the range of selected text.


func setMarkedText(Any, selectedRange: NSRange, replacementRange: NSRange)

Replaces a specified range in the receiver’s text storage with the given string and sets the selection.


func unmarkText()

Unmarks the marked text.


func validAttributesForMarkedText() -> [NSAttributedString.Key]

Returns an array of attribute names recognized by the receiver.


Storing Text

func attributedSubstring(forProposedRange: NSRange, actualRange: NSRangePointer?) -> NSAttributedString?

Returns an attributed string derived from the given range in the receiver's text storage.


func insertText(Any, replacementRange: NSRange)

Inserts the given string into the receiver, replacing the specified content.


Getting Character Coordinates

func characterIndex(for: NSPoint) -> Int

Returns the index of the character whose bounding rectangle includes the given point.


func firstRect(forCharacterRange: NSRange, actualRange: NSRangePointer?) -> NSRect

Returns the first logical boundary rectangle for characters in the given range.


Binding Keystrokes

func doCommand(by: Selector)

Invokes the action specified by the given selector.


Optional Methods

func attributedString() -> NSAttributedString

Returns an attributed string representing the receiver's text storage.

func fractionOfDistanceThroughGlyph(for: NSPoint) -> CGFloat

Returns the fraction of the distance from the left side of the character to the right side that a given point lies.

func baselineDeltaForCharacter(at: Int) -> CGFloat

Returns the baseline position of a given character relative to the origin of rectangle returned by firstRect(forCharacterRange:actualRange:).

func windowLevel() -> Int

Returns the window level of the receiver.

func drawsVerticallyForCharacter(at: Int) -> Bool

Informs the text input management system whether the protocol-conforming client renders the character at the given index vertically.


Conforming Types

See Also

Input Management

protocol NSTextInput

A set of methods that text views must implement to interact properly with the text input management system.

class NSTextInputContext

An object that represents the Cocoa text input system.

class NSTextAlternatives

A list of alternative strings for a piece of text.