Difference between revisions of "Snippets"

From GNUstepWiki
Jump to navigation Jump to search
Line 37: Line 37:
 
           if (range.location == NSNotFound)
 
           if (range.location == NSNotFound)
 
                 return NO;
 
                 return NO;
           newLength=[[textView textStorage] length]+[replacementString length]-r.length;
+
           newLength=[[textView textStorage] length]+[replacementString length]-range.length;
 
           if (newLength>maxLength)
 
           if (newLength>maxLength)
 
                 return YES; //allowing
 
                 return YES; //allowing
 
           else
 
           else
 
                 return NO; // not allowing
 
                 return NO; // not allowing

Revision as of 21:29, 26 June 2005

Testing chars entered by users in NSTextField

(just for the case if someone else has the same problem)

1. Subclass NSTextField

2. In your subclass adopt the

        - (BOOL) textView: (NSTextView*) textView
        shouldChangeTextInRange: (NSRange) range
        replacementString: (NSString*) replacementString

method.

3. In this method you can access to the replacementString as char with the following line:

        char c = *([replacementString cString) + 0];  

4. Then you are free to examinate the conditions...

Limiting text input length in NSTextField

(based on Alexander Malmberg's snippet)

1. Subclass NSTextField

2. In your subclass adopt the

        - (BOOL) textView: (NSTextView*) textView
        shouldChangeTextInRange: (NSRange) range
        replacementString: (NSString*) replacementString

method.

3. Create an instance variable setting method:

         - (void) setMaxLength: (int) ml
         {
            maxLength = ml;
         } 

4. Then fill your method 2. with this:

         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