0

私のiPhoneアプリには、ユーザーの電話番号を入力するためのテキストフィールドがあります。数字キーパッド、電話パッド、小数点パッドなどを試しましたが、どれも適切ではありません。

「-」キーを含む数字キーパッドを設定するには?

4

2 に答える 2

2

ボタンに とのプロパティをUIKeyboardTypePhonePad使用できると思います。inputAccessoryViewUITextField-

コード:

UIToolbar *punctuationbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
                       [[UIBarButtonItem alloc]initWithTitle:@"-" style:UIBarButtonItemStyleBordered target:self action:@selector(addHyphen)],
                       nil];
[numberToolbar sizeToFit];
_yourTextField.inputAccessoryView = punctuationbar;

そして、次のaddHyphenようなメソッドを追加します。

- (void)addHyphen
{
  _yourTextField.text = [_yourTextField.text stringByAppendingString:@"-"];
}

注:-このメソッドは、テキストの最後に追加されます。上記の方法を変更する必要があります。


参照:

inputAccessoryView

テキスト フィールドがファーストレスポンダになったときに表示するカスタム アクセサリ ビュー@property (readwrite, retain) UIView *inputAccessoryView;

討論

このプロパティのデフォルト値は nil です。このプロパティにビューを割り当てると、テキスト フィールドがファーストレスポンダーになったときに、そのビューが標準のシステム キーボードの上 (または、提供されている場合はカスタム入力ビューの上) に表示されます。たとえば、このプロパティを使用してカスタム ツールバーをキーボードにアタッチできます。可用性

Available in iOS 3.2 and later.

UITextField.h で宣言

UITextFieldクラスを参照

于 2013-04-23T08:17:32.117 に答える
2

次のコードのように、テキストフィールドに数字を入力brackets ( しながら、追加したい場所に自分で追加できます。dash -

#pragma mark - Phone Number Field Formatting

// Adopted from: http://stackoverflow.com/questions/6052966/phone-number-formatting
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == self.mobileNumberField) {
        int length = [self getLength:textField.text];
        if(length == 10) {
            if(range.length == 0)
                return NO;
        }
        if(length == 3) {
            NSString *num = [self formatNumber:textField.text];
            textField.text = [NSString stringWithFormat:@"(%@) ",num];
            if(range.length > 0)
                textField.text = [NSString stringWithFormat:@"%@",[num substringToIndex:3]];
        }
        else if(length == 6) {
            NSString *num = [self formatNumber:textField.text];
            textField.text = [NSString stringWithFormat:@"(%@) %@-",[num substringToIndex:3],[num substringFromIndex:3]];
            if(range.length > 0)
                textField.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]];
        }
    }
    return YES;
}

-(NSString*)formatNumber:(NSString*)mobileNumber
{
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""];
    int length = [mobileNumber length];
    if(length > 10) {
        mobileNumber = [mobileNumber substringFromIndex: length-10];
    }
    return mobileNumber;
}


-(int)getLength:(NSString*)mobileNumber
{
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
    mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""];
    int length = [mobileNumber length];
    return length;
}

ここから撮影

于 2013-04-23T08:00:17.697 に答える