クレジットカード入力を取得するUITextFieldがあります。ユーザーがクレジットカード番号を入力しているときにiOS用のGrouponアプリが行うのと同じように、ユーザーが4番目の文字を入力した後にダッシュを自動的に挿入するにはどうすればよいですか?前もって感謝します。
質問する
2250 次
2 に答える
0
于 2012-11-28T06:37:56.253 に答える
0
テキストが変更されたときに送信される一般的な通知は、UITextFieldTextDidChangeNotification です。viewDidLoad メソッドでは、この通知を受信するように登録し、テキストが変更されたときにセレクターを実行する必要があります。セレクターでは、4 文字ごとにダッシュを追加します。
私のコードでは、テキストフィールドの名前はtextFieldです。
- (void)viewDidLoad
{
[super viewDidLoad];
NSNotificationCenter* center=[NSNotificationCenter defaultCenter];
[center addObserver: self selector: @selector(textDidChange:) name: UITextFieldTextDidChangeNotification object: textField];
}
- (void) textDidChange : (NSNotification*) notification
{
NSString* string=[[textField text] stringByReplacingOccurrencesOfString: @"-" withString: @""];
__block NSMutableString* newString= [string mutableCopy];
NSMutableIndexSet* set=[NSMutableIndexSet new];
for(NSUInteger i=4; i<[string length];i+=4)
{
[set addIndex: i+i/4-1];
}
[set enumerateIndexesInRange: NSMakeRange(0, [string length]+[string length]/4) options: 0 usingBlock: ^(NSUInteger index, BOOL* stop)
{
[newString insertString: @"-" atIndex: index];
}];
[textField setText: newString];
}
4 文字ごとにダッシュを追加するコードは長いため、もっと短い方法があるかもしれません。
PS: 前回のバージョンが間違っていたので、編集しました (文字を正しく削除できませんでした)。
于 2012-11-13T11:23:23.480 に答える