1

私はアプリを作成しています。ユーザーがデータを入力したときに、ユーザーが入力した場合のように、この入力を取得せず、テキストフィールドに何も表示せず、数値を入力した場合は受け入れる必要があります。

4

5 に答える 5

4

次のコードは役に立ちます。これにより、数字以外のテキストをテキストフィールドに入力できなくなります。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    static NSCharacterSet *charSet = nil;
    if(!charSet) {
    charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
    }
    NSRange strLocation = [string rangeOfCharacterFromSet:charSet];
    return (strLocation.location == NSNotFound);
}
于 2013-03-13T08:47:54.223 に答える
2

なぜあなたはキーボードスタイルを与える方が良いのですか

[txtField setKeyboardType:UIKeyboardTypeNumberPad]

または、プログラムでそれを行うことができます:

NSString *nameRegex = @"[0-9]*";
NSPredicate *nameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", nameRegex];
BOOL value = [nameTest evaluateWithObject:string];
if(value == YES)
    {
 // Do Somethings
    }
    else 
        {

    // Do something
    }
于 2013-03-13T08:31:46.890 に答える
0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag==3)
{
    NSUInteger lengthOfString = string.length;
    for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++)
    {
        unichar character = [string characterAtIndex:loopIndex];
        if (character < 46 || character==47)
            return NO;
        if (character > 57)
            return NO;
    }
}

タグを textField に設定します。

于 2013-03-13T08:38:36.257 に答える
0

Textfield のキーボード タイプを Numberpad に設定する必要があります。

コードを使用してこれを試してください: (また、XIB プロパティのインターフェイス ビルダーで設定することもできます)

[txtFieldObj setKeyboardType:UIKeyboardTypeNumberPad];
于 2013-03-13T08:32:00.850 に答える
0
 NSUInteger lengthOfString = string.length;
    for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++) {
        unichar character = [string characterAtIndex:loopIndex];
        if (character < 48) return NO; // 48 unichar for 0
        if (character > 57) return NO; // 57 unichar for 9
    }

これは、テキストフィールドに記述する必要があるコードであり、範囲内の文字を変更する必要があります

于 2013-03-13T09:58:12.823 に答える