Skip to main content

xcode 4.2.1 - limiting character length in TextField



I have been trying to limit a textField by many codes available out there in the internet but with no luck.





I have added UIViewController<UITextFieldDelegate> in my header file





and textField.delegate = self; in my viewDidLoad





and implemented the following fundtion in my .m file:







- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

return !([newString length] > 5);

}







this stil does not limit my text field. any idea?


Comments

  1. Do it as following as it has been the exact duplicate of this

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return (newLength > 5) ? NO : YES;
    }

    ReplyDelete
  2. The replacement string is just the 1 character that was pressed, not the whole string so you need to add It to the current textfield.text before counting.
    Your count is probably always 1 (or more if pasting a word)

    ReplyDelete
  3. I implement this in my code and it works:

    This code eliminate all the letters only accept numbers, but like I delete the character, you could delete everything that its over length 5 and it keeps a nice effect that appears and disappears

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextFieldTextDidChangeNotification object:textField];
    }


    - (void)textChanged:(NSNotification *)textField {
    NSString *text = [[textField object] text];
    NSString *last = [text substringFromIndex:[text length] -1];
    NSArray *accept = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7" , @"8", @"9", @".", nil];

    for (int i=0; i<[accept count]; i++) {
    NSLog(@"%@", [accept objectAtIndex:i]);
    if (![last isEqualToString:[accept objectAtIndex:i]]) {
    [[textField object] setText:[text substringToIndex:[text length]-1]];
    }
    }
    }

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?

CCNA 1 Final Exam 2011 latest (hot hot hot)

  Hi! I have been posted content of ccna1 final exam (latest and only question.) I will post the answer and insert image on sunday. If you care, please subscribe your email an become a first person have full test content. Subcribe now  Some question  have not content because this question have images content. So that can you wait for me? SUNDAY 1. A user sees the command prompt: Router(config-if)# . What task can be performed at this mode? Reload the device. Perform basic tests. Configure individual interfaces. Configure individual terminal lines. 2. Refer to the exhibit. Host A attempts to establish a TCP/IP session with host C. During this attempt, a frame was captured with the source MAC address 0050.7320.D632 and the destination MAC address 0030.8517.44C4. The packet inside the captured frame has an IP source address 192.168.7.5, and the destination IP address is 192.168.219.24. At which point in the network was this packet captured? leaving host A leaving ATL leaving...