LoginSignup
8
8

More than 5 years have passed since last update.

金額入力フィールド

Posted at

金額入力フィールドを作成について。
フォーマットは日本円(例: ¥100,000)
桁数は10桁まで制限しています。

VuewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>{
}

@property (nonatomic, weak) IBOutlet UITextField* priceField;

@end
VuewController.m
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _priceField.delegate = self;

    [_priceField addTarget:self action:@selector(priceEditingStart:) forControlEvents:UIControlEventEditingDidBegin];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


// 金額入力スタート
-(void)priceEditingStart:(UITextField*)textField
{

    if([textField.text isEqualToString:@""]){
        [self textField:_priceField shouldChangeCharactersInRange:NSMakeRange(0,0) replacementString:@"0"];
    }

}


// 金額フォーマット
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *text             = _priceField.text;
    NSCharacterSet *charSet    = nil;
    NSString *numberChars      = @"0123456789";


    static NSNumberFormatter *numberFormatter;
    if (!numberFormatter)
    {
        numberFormatter = [[NSNumberFormatter alloc] init];
        numberFormatter.numberStyle             = NSNumberFormatterCurrencyStyle;
        numberFormatter.currencyCode            = @"JPY";
    }

    charSet = [NSCharacterSet characterSetWithCharactersInString:numberChars];
    NSCharacterSet *invertedCharSet = [charSet invertedSet];
    NSString *trimmedString = [string stringByTrimmingCharactersInSet:invertedCharSet];
    text = [text stringByReplacingCharactersInRange:range withString:trimmedString];

    text = [self deleteComma:text];

    if([text length] < 10){

        NSNumber *number = [numberFormatter numberFromString:text];

        if (number == nil)
        {
            number = [NSNumber numberWithInt:0];
        }

        textField.text = [numberFormatter stringFromNumber:number];

    }

    return NO;

}


// カンマの削除
- (NSString *)deleteComma:(NSString *)targetString;
{
    NSString *_mysetString = [NSString stringWithFormat:@"%@",targetString];
    NSString *_mysetString2= [_mysetString stringByReplacingOccurrencesOfString:@"," withString:@""];
    return _mysetString2;
}

@end
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8