0

UITableViewCell 内の CellTextField に数値のみを受け入れさせたいと考えています。次のようにプログラムで UITableViewCells を作成します。

    -(UITableViewCell*) getCellContentView: (NSString*) cellIdentifier {

        ...

        UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:cellFrame reuseIdentifier:cellIdentifier];

        ... 

        CellTextField *txt;  
        txt = [[CellTextField alloc] initWithFrame:amountFrame];

        ... //here we should setup a delegate or similar to handle char validation for txt

        [cell.contentView addSubview:txt];
        return cell;
    }

UITextField コンポーネントには Delegate 'shouldChangeCharactersInRange' がありますが、CellTextFields に相当するものが見つかりません。

4

1 に答える 1

1

これを試してください

.h

  @interface YourClass : ParentClass <UITextFieldDelegate>{
  NSNumberFormatter *integerNumberFormatter;
  }
  @end

.m

-(void)viewDidLoad
{
      [integerNumberFormatter setMaximumFractionDigits:0];
       yourTextField.delegate = self;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSString* proposedString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    NSNumber *proposedNumber = [integerNumberFormatter numberFromString:proposedString];
    if (proposedNumber) {
        NSString *integerString = [integerNumberFormatter stringFromNumber:proposedNumber];
        if ([integerString isEqualToString:proposedString]) {
            // proposed string is an integer
            return YES;
        }
    }

    return NO;
}
于 2012-08-15T10:47:14.123 に答える