Ale*_*nko 9 iphone objective-c uitextfield uikit ipad
在我的应用程序中,我需要允许用户只输入数字.如何让UITextField只接收来自用户的号码?
Wri*_*sCS 32
允许使用此示例中的字符,因此如果您不希望用户使用字符,请将其排除myCharSet
.
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if (![myCharSet characterIsMember:c]) {
return NO;
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢以下解决方案,除了数字和退格之外,它实际上阻止了任何输入.退格由于某种原因由空字符串表示,除非空字符串返回YES,否则无法使用退格键.当用户输入其他数字字符时,我还会弹出警报视图.
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (string.length == 0) {
return YES;
}
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c]) {
return YES;
}
}
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Invalid Input" message:@"Only numbers are allowed for participant number." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[av show];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13853 次 |
最近记录: |