views:

235

answers:

1

Building an NSCharacter set to restrict a UITextField for entering user names. I want the user to be able to also enter an underscore (so [A-Za-z0-9_]) but alphanumericCharacterSet does not include it. Is there a way to specify a range like that in short form? I see + (id)characterSetWithRange:(NSRange)aRange, but I'm not really understanding how that would work.

I've got a simple UITextField sub-class that I pass the character set to. The restriction works fine and doesn't allow the user to enter anything but alpha numeric. Just need to add the "_" to those allowances.

NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
[textField setAllowed:characterSet];
[textField setFrame:frame];
+6  A: 
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString@"_"];
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
drawnonward
+1 what I love most is that about Cocoa is that I discover something new every day. This is new to me, but it's exactly the correct way to do this. great find!
Dave DeLong
Indeed. Elegant and effective. Thanks, drawnonward.
Typeoneerror