【发布时间】:2011-08-21 08:59:09
【问题描述】:
你好
我知道 ipad 键盘不喜欢 iphone 可以设置“UIKeyboardTypeNumberPad”!!
但如果我想要它只能在文本字段上键入并显示数字 0 到 9。
如何比较文本字段上的用户键是数字还是不是数字?
提前致谢。
迷你
【问题讨论】:
标签: xcode ipad uitextfield
你好
我知道 ipad 键盘不喜欢 iphone 可以设置“UIKeyboardTypeNumberPad”!!
但如果我想要它只能在文本字段上键入并显示数字 0 到 9。
如何比较文本字段上的用户键是数字还是不是数字?
提前致谢。
迷你
【问题讨论】:
标签: xcode ipad uitextfield
How to dismiss keyboard for UITextView with return key?怎么样?
这个想法是你每次用户点击一个键时检查,如果它是一个数字,让它通过。否则忽略它。
让你的Controller支持UITextViewDelegate协议并实现textView:shouldChangeTextInRange:replacementText:方法。
【讨论】:
看看this 线程。它解决了我的类似问题。
【讨论】:
不要在显示后比较图形,而是在 shouldChangeCharactersInRange 中进行比较
请务必声明委托 UITextFieldDelegate,而我总是忘记,请确保 textField 本身的委托指向其中包含代码的类。
//---------------------------------------------------------------------------
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string length] == 0 && range.length > 0)
{
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
return NO;
}
NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
if ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0)return YES;
return NO;
}
【讨论】:
(BOOL) textField: (UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string {
NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterNoStyle];
NSString * newString = [NSString stringWithFormat:@"%@%@",textField.text,string];
NSNumber * number = [nf numberFromString:newString];
if (number) {
return YES;
} else
return NO;
}
【讨论】: