Difference between revisions of "Snippets"

From GNUstepWiki
Jump to navigation Jump to search
 
Line 15: Line 15:
 
4. Then you are free to examinate the conditions...
 
4. Then you are free to examinate the conditions...
  
--[[User:Andras|Andras]] 13:17, 26 Jun 2005 (CEST)
+
== 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]-r.length;
 +
          if (newLength>maxLength)
 +
                return YES; //allowing
 +
          else
 +
                return NO; // not allowing

Revision as of 11:35, 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]-r.length;
          if (newLength>maxLength)
               return YES; //allowing
          else
               return NO; // not allowing