2011-12-09 9 views
0

NSTextFieldに数字を入力することを禁止するにはどうすればよいですか?NSTextFieldに数字を入力することを禁止するにはどうすればよいですか?

は、私は現在後、ユーザーが値を入力ポップアップ示すNSFormatterカスタムを使用していますが、どのように私の代わりに入力した後に右の挿入を防止することができますか?

おかげ

私はこれを試してみたのだが、ほとんど仕事..しかし、私は数とし、いくつかの文字、すなわち「24jdf」を入力すると文字はまだ(フィールドがフォーカスを失ったときに削除しても)が表示されます。

- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error 
//- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(NSString **)error 
{ 

    if ([self numberFromString:partialString] == nil) 
     return NO; 

    return YES; 
} 

答えて

1

あなたのNSFormatterをサブクラス化して、次のメソッドをオーバーライドする必要があります:私は、番号を入力して、いくつかの文字は、IE場合

-(BOOL)isPartialStringValid:(NSString **)partialStringPtr proposedSelectedRange:(NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString **)error { 
    NSString *string = *partialStringPtr; 
    NSCharacterSet *numbers = [NSCharacterSet decimalDigitCharacterSet]; 
    return (NSNotFound == [string rangeOfCharacterFromSet:numbers].location); 
} 
+0

「24jdf」の文字がまだ時に削除しても(表示されていますフィールドはフォーカスを失う)。 – aneuryzm

+0

???あなたは*数字*を表示したくないと言った。上記のコードは動作するはずですか、NSFormatterまたはNSNumberFormatterをサブクラス化するのですか? –

+0

申し訳ありません。私は実際に文字を表示したくないので、最後の行を返すように変更しました!(NSNotFound == [string rangeOfCharacterFromSet:numbers] .location); – aneuryzm

関連する問題