Gewusst wie: hinzufügen von text-Feld zu inputAccessoryView und machen die textView first responder
Mein code:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rectFake = CGRectZero;
UITextField *fakeField = [[UITextField alloc] initWithFrame:rectFake];
[self.view addSubview:fakeField];
UIView *av = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 0.0, 39.0)];
av.backgroundColor = [UIColor darkGrayColor];
CGRect rect = CGRectMake(200.0, 4.0, 400.0, 31.0);
UITextField *textField = [[UITextField alloc] initWithFrame:rect];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:24.0];
textField.delegate = self;
[av addSubview:textField];
fakeField.inputAccessoryView = av;
[fakeField becomeFirstResponder];
}
Habe ich versucht, hinzuzufügen
[textField becomeFirstResponder]
am Ende, aber es hat nicht funktioniert.
Einem anderen problem, das delegate-Methode zum ausblenden der Tastatur, wenn die EINGABETASTE gedrückt wird, funktioniert nicht, auch.
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
- versuchen Sie, diese UIView *av = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 39.0)];
- Sorry habe ich nicht erwähnt, dass es für das iPad und diese Ansicht erstreckt sich entlang der Tastatur, so dass die Breite nicht sinnvoll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war vor der gleichen Herausforderung. Ihre (und meine erste) Ansatz wahrscheinlich nicht funktionieren, da das text-Feld in der
inputAccessoryView
weigert sich first responder alsUITextField
befindet sich nicht auf dem Bildschirm zunächst.Meine Lösung: überprüfen Sie, wenn die Tastatur (und damit der Zubehör-view) angezeigt!
Schritt 1) Listen für die Meldung (stellen Sie sicher, dass dieser code ausgeführt wird, bevor Sie die Benachrichtigung erhalten).
Schritt 2) Wenn die Tastatur erschienen ist, können Sie die textfield-Objekt in der
inputAccessoryView
zu werden first responder:[yourHiddenTextField becomeFirstResponder]
[textField resignFirstResponder];
nach dem drücken der fertig-Schaltfläche das input-accessory-view-Folien nach unten, um den unteren Rand des Bildschirms und bleibt dort. Brauche ich, um es zu entfernen aus der Sicht manuell dann?