Difference between revisions of "Snippets"

From GNUstepWiki
Jump to navigation Jump to search
m (Small language cleanups)
(Redirect to category)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Testing ''chars'' entered by users in ''NSTextField'' ==
+
{{category redirect|Snippets}}
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
 

Latest revision as of 09:54, 4 January 2007

This page is being or has been relocated.

The contents are now (or should soon be) located at Category:Snippets.