我有一个位图字体,它没有每个字符,例如重音字符(é î ü 等)或符号,例如“¥”或©,我用来在游戏的高分表中显示用户名。
是否可以将 UIKit 键盘限制为某些字符,或者只允许 UITextField 中的某些字符?还是我必须推出自己的输入机制?我在想,老派,街机风格,一次一个字母“东西”就可以了。
我有一个位图字体,它没有每个字符,例如重音字符(é î ü 等)或符号,例如“¥”或©,我用来在游戏的高分表中显示用户名。
是否可以将 UIKit 键盘限制为某些字符,或者只允许 UITextField 中的某些字符?还是我必须推出自己的输入机制?我在想,老派,街机风格,一次一个字母“东西”就可以了。
使用 intregus 提到的 UITextFieldDelegate 方法,您可以很容易地做到这一点:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// Only characters in the NSCharacterSet you choose will insertable.
NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefgABCDEFG"] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}
您可以尝试使用以下 UITextFieldDelegate 方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
尝试使用UIKeyboardTypeNamePhonePad
你的UITextField
. 它只有字母和数字:
textField.keyboardType = UIKeyboardTypeNamePhonePad;
使用界面生成器,您可以在任何功能中链接并获取“编辑更改”事件。现在你可以在那里检查长度
- (IBAction)onValueChange:(id)sender
{
NSString *text = nil;
int MAX_LENGTH = 20;
switch ([sender tag] )
{
case 1:
{
text = myEditField.text;
if (MAX_LENGTH < [text length]) {
myEditField.text = [text substringToIndex:MAX_LENGTH];
}
}
break;
default:
break;
}
}