我有一个位图字体,其不具有每一个字符,例如重音字符(E I U等)或符号如“¥”或©我使用显示在高分表的用户名为其一个游戏。

时可以将键盘的UIKit限制在特定的字符,或仅允许在一定的UITextField字符?或者将我必须推出自己的投入机制?我想和老同学,街机风格,同时“东西”一个字母将是确定的。

有帮助吗?

解决方案

您可以尝试使用以下方法UITextFieldDelegate:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

其他提示

使用由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];
}

尝试使用UIKeyboardTypeNamePhonePadUITextField。它只有字母和数字它:

textField.keyboardType = UIKeyboardTypeNamePhonePad;

使用Interface Builder你可以链接,并得到该事件在您的任何功能的“编辑改变”。现在有你可以把支票长度

- (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;
    }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top