2010-05-04 24 views
54

Xây dựng bộ NSCharacter để hạn chế UITextField để nhập tên người dùng. Tôi muốn người dùng cũng có thể nhập dấu gạch dưới (vì vậy [A-Za-z0-9_]) nhưng chữ và sốCharacterSet không bao gồm nó. Có cách nào để chỉ định một phạm vi như vậy ở dạng ngắn? Tôi thấy + (id)characterSetWithRange:(NSRange)aRange, nhưng tôi không thực sự hiểu cách làm việc đó.NSCharacterSet: Làm cách nào để thêm "_" vào ký tự chữ và sốCharacterSet?

Tôi có một lớp con UITextField đơn giản mà tôi chuyển ký tự được đặt. Hạn chế hoạt động tốt và không cho phép người dùng nhập bất kỳ thứ gì ngoài số alpha. Chỉ cần thêm "_" vào các khoản phụ cấp đó.

NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet]; 
[textField setAllowed:characterSet]; 
[textField setFrame:frame]; 

Trả lời

115

Objective-C

NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"_"]; 
[_alnum formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]]; 

Swift

let _alnum = NSMutableCharacterSet(charactersIn: "_") 
_alnum.formUnion(with: .alphanumerics) 
+4

+1 những gì tôi thích nhất là về Cocoa là tôi khám phá những điều mới mỗi ngày. Điều này là mới đối với tôi, nhưng đó là cách chính xác để làm điều này. tuyệt vời tìm thấy! –

+2

Thật vậy. Thanh lịch và hiệu quả. Cảm ơn, rút ​​ra. – typeoneerror

28

Một cách khác có thể đã được để làm cho nó có thể thay đổi và thêm nó.

NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet]; 
[characterSet addCharactersInString:@"_"]; 
0
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    NSCharacterSet *blockedCharacters = [[NSCharacterSet whitespaceCharacterSet] invertedSet]; 
    NSCharacterSet *blockedCharacters2 = [[NSCharacterSet letterCharacterSet] invertedSet]; 
    return ([string rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound || [string rangeOfCharacterFromSet:blockedCharacters2].location); 

} 
Các vấn đề liên quan