2010-02-27 8 views
9

Ich mag einen Weg finden, um programmatisch die Wähler Feuer, das die iPhone-Tastatur verursacht von Buchstaben in Zahlen zu wechseln. Mir ist bewusst, dass ich den Tastaturtyp wechseln kann, aber ich möchte wissen, ob es eine Möglichkeit gibt, dies zu tun, ohne den Tastaturtyp zu wechseln.Kann ich programmatisch die „-Schalter auf Ziffernblock“ Taste Feuer auf dem iPhone Tastatur

+0

ist dies für UIWebView oder eine andere Unterklasse von uiview? EDIT: Entschuldigung, gerade bemerkt das uitextfield Tag – conorgriffin

Antwort

6

Sie können nicht einschalten keyplanes (alphabetische keyplane auf numerische keyplane zu Symbol keyplane) programmatisch, zumindest nicht in irgendeiner Weise, die öffentlich unterstützt wird. Wie Sie bereits erwähnt haben, können Sie den Tastaturtyp oder das Erscheinungsbild der Texteingabeeigenschaften des Erstantragstellers ändern. Dies unterscheidet sich jedoch vom Wechsel zwischen den verschiedenen Schlüsselebenen, die nur der Benutzer ausführen kann.

1

Werfen Sie einen Blick auf diese:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString * cellIdentifier = @"CellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if(cell == nil) 
    { 
     cell = [ [ [UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; 
     cell.textLabel.font = [UIFont boldSystemFontOfSize:14.0f]; 
     cell.textLabel.textColor = [UIColor whiteColor]; 
    } 

    UITextField * textField = [ [ UITextField alloc] initWithFrame:CGRectMake(55.0f, 10.0f, 230.0f, 31.0f)]; 
    textField.textColor = [UIColor whiteColor]; 

    textField.delegate = self; 
c this care fully ///////////if(indexPath.row == 0) 
c this care fully // textField.keyboardType = UIKeyboardTypeDefault; 
c this care fully //else 
c this care fully // textField.keyboardType = UIKeyboardTypePhonePad; 
    textField.autocorrectionType = UITextAutocorrectionTypeNo; 
    [cell.contentView addSubview:textField]; 

    if(indexPath.row == 0) 
    { 
     self.sender = textField; 
     cell.textLabel.text = @"From:"; 
    } 
    else 
    { 
     self.mobileNumber = textField; 
     cell.textLabel.text = @"To:"; 
    } 
    [textField release]; 
    if(indexPath.row == 1) 
    { 
     UIButton * contactsButton = [UIButton buttonWithType:UIButtonTypeContactAdd]; 
     [contactsButton addTarget:self action:@selector(addContact:) forControlEvents:UIControlEventTouchUpInside]; 
     cell.accessoryView = contactsButton; 

    } 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    return cell; 

} 

prüfen, wo ich „c dieser Versorgung in vollem Umfang“

Diese Sie Tastaturen programmatisch wechseln helfen kommentiert.

+0

können Sie den Einzug in Ihrem Code beheben? – rickharrison

6

nur eine Abhilfe: Wenn Sie die keyplane einer aktiven Tastatur ändern möchten, wie aus Alphabet Ziffernblock, während ein UITextField bearbeiten, stellen Sie zuerst den neuen Wert auf die keyboard Eigenschaft des Textfeldes, senden Sie als nächstes ein ResignFirstResponder schließlich eine Nachricht vom Typ "answerFirstResponder" an das Textfeld. Z.B.

textfield.keyboardType = UIKeyboardTypeNumberPad; 
[textField resignFirstResponder]; 
[textField becomeFirstResponder]; 

Swift:

textField.keyboardType = .numberPad 
textField.resignFirstResponder() 
textField.becomeFirstResponder() 

Hoffe, es hilft ;-D

+0

Jedes Wort zu Apps, das dafür abgelehnt wird? –

+2

Verwenden Sie 'textField.reloadInputViews()' stattdessen! –

+0

@NikKov 'textField.reloadInputViews()' funktioniert nicht von selbst. – David