Ich benutze vier textFields auf einer Seite. Für die erste und zweite TextFields benutze ich normale Tastatur. Die dritte und vierte sind für Zeit Wert - ich verwende programmgesteuert erstellt DatePicker und setzen Sie es über textField.inputView in der IBAction-Methode.DatePicker über textField.inputView wird nur zum zweiten Mal angezeigt (normale Tastatur wird zum ersten Mal aufgerufen)
Der Punkt ist, dass mein DatePicker nur zum zweiten Mal angezeigt wird - normale Tastatur wird stattdessen zum ersten Mal aufgerufen.
Es passiert nur einmal - wenn ich Seite öffne und auf das Textfeld mit dem Zeitwert zum ersten Mal klicke. Wenn ich zum zweiten Mal auf dieses Textfeld klicke - es funktioniert einwandfrei (mein Datepicker wird angezeigt)
Wie kann ich das beheben?
Das Codebeispiel:
- (IBAction)wakeUpWeekdaysPressed:(id)sender {
UIDatePicker *timePicker = [[UIDatePicker alloc] init];
timePicker.datePickerMode = UIDatePickerModeTime;
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(weekdaysTimePickerDoneAction:)];
UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(weekdaysTimePickerCancelAction:)];
UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:@[cancelButton, flexibleSpace, doneButton]];
// toolbar.barStyle = UIBarStyleBlackTranslucent;
toolbar.translucent = YES;
[_wakeUpTimeWeekdays setInputView:timePicker];
[_wakeUpTimeWeekdays setInputAccessoryView:toolbar];
}
nicht hilft, jetzt entweder picker oder Tastatur Sie zeigen nicht für dieses Textfeld –
(IBAction) wakeUpWeekdaysPressed: (id) sender Verfahren auf eine beliebige Taste aufgerufen klicken? Wenn ja, dann mach das nicht so. fügen Sie diesen Code in viewdidload ein und verzichten Sie auf den ersten Responder. – Lion
bereits gepostet meine eigene Lösung –