0

UITextFieldのみを許可したいのですがalphabets.SpecialCharacters(@,!,,,)、数字は許可されていません。そのため、キーボードの種類をに制限することを考えましたtxtfirstname.keyboardType = UIKeyboardTypeAlphabet;

-(void)viewDidLoad{
 txtfirstname.keyboardType = UIKeyboardTypeAlphabet;
}

しかし、数字を押すと、テキストフィールドにも入力されます.なぜそうなのですか?

数字または特殊文字が押されるとtxtfirstname、テキストフィールドに入力されます。

どうすればいいですか?

4

2 に答える 2

1

ここでは、以下の関数を使用します... NSCharacterSet で文字が必要なものについて言及してください..

-(NSString *) formatIdentificationNumber:(NSString *)string
{
    NSCharacterSet * invalidNumberSet = [NSCharacterSet characterSetWithCharactersInString:@"àáâäæãåçćčèéêëęėîïìíįłñńôöòóõœøßśšûüùúŵŷÿźžż°§¿’‘€$£¥₩\n1234567890"];
    NSString  * result  = @"";
    NSScanner * scanner = [NSScanner scannerWithString:string];
    NSString  * scannerResult;

    [scanner setCharactersToBeSkipped:nil];

    while (![scanner isAtEnd])
    {
        if([scanner scanUpToCharactersFromSet:invalidNumberSet intoString:&scannerResult])
        {
            result = [result stringByAppendingString:scannerResult];
        }else
        {
            if(![scanner isAtEnd])
            {
                [scanner setScanLocation:[scanner scanLocation]+1];
            }
        }
    }

    return result;
} 

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

    if(![string isEqualToString:@""])
    {
        if(textField == textfieldname)
        {
            if ([[self formatIdentificationNumber:string] isEqualToString:@""] && ![string isEqualToString:@""]) {
                return NO;
            }   
}
于 2013-01-16T11:44:31.780 に答える
0

これを試して

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
 {
     static NSCharacterSet *charSet2 = nil;
     if(!charSet2) 
  {

     charSet2 = [[NSCharacterSet  characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ./,':+_)\(*~`=&^%$#@!,-?<>\"{}][| "] invertedSet];

  } 
        NSRange location = [string rangeOfCharacterFromSet:charSet2];
        return (location.location == NSNotFound);


 }
于 2013-01-16T11:43:55.480 に答える