Difference between revisions of "NSTextField"
(Moved from Snippets) |
(Added categories) |
||
Line 46: | Line 46: | ||
else | else | ||
return NO; // not allowing | return NO; // not allowing | ||
+ | |||
+ | |||
+ | |||
+ | [[Category:AppKit]] | ||
+ | [[Category:Snippets]] |
Latest revision as of 15:47, 21 April 2006
NSTextField displays text a user can select or edit and sends its action message to its target when the user presses the Return key while editing.
Code chunks
Testing chars entered by users in NSTextField
When the contents of a NSTextField are changed by the user, it is possible to check whether or not to accept the changes.
1. Subclass NSTextField
2. In your subclass implement the
- (BOOL) textView: (NSTextView*) textView shouldChangeTextInRange: (NSRange) range replacementString: (NSString*) replacementString
method.
3. Within this method you can access to the replacementString as an NSString, or as char with the following line:
char c = *([replacementString cString] + 0);
4. You should return YES or NO depending on whether you accept the replacement string.
Limiting text input length in NSTextField
(based on Alexander Malmberg's snippet)
1. Subclass NSTextField
2. In your subclass implement the
- (BOOL) textView: (NSTextView*) textView shouldChangeTextInRange: (NSRange) range replacementString: (NSString*) replacementString
method.
3. Also create an instance variable setting method:
- (void) setMaxLength: (int) ml { maxLength = ml; }
4. Then fill your implementation of textView:shouldChangeTextInRange:replacementString: with the following code:
int newLength; /* The exact change isn't known. Disallow the change to be safe. */ if (range.location == NSNotFound) return NO; newLength=[[textView textStorage] length]+[replacementString length]-range.length; if (newLength>maxLength) return YES; //allowing else return NO; // not allowing