UITextField
デリゲート中に のテキストを変更できます。textField:shouldChangeCharactersInRange:replacementString:
このメソッドから NO を返すだけで、次のようにテキストを変更します (小数点を追加します)。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];
// add decimal point to newText
textField.text = newText;
return NO;
}
または、次のように、値変更ハンドラーで静的 BOOL を使用して、自分で値を変更していることを示します。
-valueDidChange:(id)notify {
static BOOL ownChange = NO;
if (ownChange) return;
ownChange = YES;
textField.text = "12.23";
ownChange = NO;
}
ただし、これはきれいではありません:)