NSTextInput Protocol Reference
| Adopted by |
NSInputManager |
| Framework | /System/Library/Frameworks/AppKit.framework |
| Availability | Available in OS X v10.0 and later. |
| Declared in | NSInputManager.h |
| Companion guides | Text System Overview Text Input Management |
Overview
The NSTextInput protocol defines the methods that Cocoa text views must implement in order to interact properly with the text input management system.
NSTextView and its abstract superclass NSText are the only classes included in Cocoa that implement NSTextInput. To create another text view class, you can either subclass NSTextView (and not NSText, for historical reasons), or subclass NSView and implement the NSTextInput protocol.
Tasks
Marked Text
-
– hasMarkedTextrequired method -
– markedRangerequired method -
– selectedRangerequired method -
– setMarkedText:selectedRange:required method -
– unmarkTextrequired method -
– validAttributesForMarkedTextrequired method
Text Storage
-
– attributedSubstringFromRange:required method -
– insertText:required method
Character Coordinates
-
– characterIndexForPoint:required method -
– firstRectForCharacterRange:required method
Key Bindings
-
– doCommandBySelector:required method
Other
-
– conversationIdentifierrequired method
Instance Methods
attributedSubstringFromRange:
Returns an attributed string derived from the given range in the receiver's text storage. (required)
Parameters
- theRange
The range in the text storage from which to create the returned string.
Return Value
The string created from the given range.
Discussion
This method allows input mangers to query any range in text storage.
An implementation of this method should be prepared for theRange to be out-of-bounds. For example, the InkWell text input service can ask for the contents of the text input client that extends beyond the document’s range. In this case, you should return the intersection of the document’s range and theRange. If the location of theRange is completely outside of the document’s range, return nil.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hcharacterIndexForPoint:
Returns the index of the character whose frame rectangle includes the given point. (required)
Parameters
- thePoint
A point, in screen coordinates.
Return Value
The character index, measured from the start of the receiver’s text storage, of the character containing the given point. Returns NSNotFound if the cursor is not within a character.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hconversationIdentifier
Returns a number used to identify the receiver’s context to the input server. (required)
Return Value
The identifying number of the receiver.
Discussion
Each text view within an application should return a unique identifier (typically its address). However, multiple text views sharing the same text storage must all return the same identifier.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hdoCommandBySelector:
Invokes the given selector if possible. (required)
Parameters
- aSelector
The selector to be invoked.
Discussion
If aSelector cannot be invoked, then doCommandBySelector: should not pass this message up the responder chain. NSResponder also implements this method, and it does forward uninvokable commands up the responder chain, but a text view should not. A text view implementing the NSTextInput protocol inherits from NSView, which inherits from NSResponder, so your implementation of this method will override the one in NSResponder. It should not call super.
Availability
- Available in OS X v10.0 and later.
See Also
-
– interpretKeyEvents:(NSResponder) -
– doCommandBySelector:(NSResponder)
Declared In
NSInputManager.hfirstRectForCharacterRange:
Returns the first frame rectangle for characters in the given range, in screen coordinates. (required)
Parameters
- theRange
The character range whose frame is returned.
Return Value
The frame rectangle for the given range of characters.
Discussion
If theRange spans multiple lines of text in the text view, the rectangle returned is the one for the characters in the first line. If the length of theRange is 0 (as it would be if there is nothing selected at the insertion point), the rectangle coincides with the insertion point, and its width is 0.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hhasMarkedText
Returns a Boolean value indicating whether or not the receiver has marked text. (required)
Return Value
YES if the receiver has marked text, NO if it doesn’t.
Discussion
Unlike other methods in this protocol, this one is not called by an input server. The text view itself may call this method to determine whether there currently is marked text. NSTextView, for example, disables the Edit > Copy menu item when this method returns YES.
Availability
- Available in OS X v10.0 and later.
See Also
Declared In
NSInputManager.hinsertText:
Inserts the given string into the receiver’s text storage. (required)
Parameters
- aString
Either an
NSStringor anNSAttributedStringobject.
Discussion
This method is the entry point for inserting text typed by the user and is generally not suitable for other purposes. Programmatic modification of the text is best done by operating on the text storage directly. Because this method pertains to the actions of the user, the text view must be editable for the insertion to work.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hmarkedRange
Returns the range of the marked text. (required)
Return Value
The range of marked text.
Discussion
The returned range measures from the start of the receiver’s text storage. The return value’s location is NSNotFound, and its length is 0 if and only if hasMarkedText returns NO.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hselectedRange
Returns the range of selected text. (required)
Return Value
The range of selected text.
Discussion
The returned range measures from the start of the receiver’s text storage. If there is no selection, the return value’s location is NSNotFound, and its length is 0.
Availability
- Available in OS X v10.0 and later.
See Also
Declared In
NSInputManager.hsetMarkedText:selectedRange:
Replaces currently marked text in the receiver’s text storage with the given string and sets the selection to the given range, computed from the beginning of the marked text. (required)
Parameters
- aString
Either an
NSStringor anNSAttributedStringobject; must not benil.- selRange
The range within aString to set as the selection.
Discussion
If there is no marked text, the current selection is replaced. If there is no selection, the string is inserted at the insertion point.
Availability
- Available in OS X v10.0 and later.
See Also
Declared In
NSInputManager.hunmarkText
Removes any marking from pending input text and disposes of the marked text as it wishes. The text view should accept the marked text as if it had been inserted normally. (required)
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.hvalidAttributesForMarkedText
Returns an array of names for the attributes supported by the receiver. (required)
Return Value
An array of NSString objects representing names for the supported attributes.
Discussion
The input server may choose to use some of these attributes in the text it inserts or in marked text. Returns an empty array if no attributes are supported. See NSAttributedString Additions for the set of string constants that you could return in the array.
Availability
- Available in OS X v10.0 and later.
Declared In
NSInputManager.h© 2008 Apple Inc. All Rights Reserved. (Last updated: 2008-10-22)