2016-06-17 7 views
-1

Ich habe diese UIViewController als Delegierten für die UITextField in der viewDidLoad mit dieser Zeile festgelegt: self.nameInputTextField.delegate = self;.iOS Tastatur gibt nicht zurück, bis nach Ansicht Übergang

I die Delegierten auch auf die Klasse gesetzt durch <UITextFieldDelegate> auf die @interface Erklärung hinzugefügt wird.

Wenn ich das nextButton auswähle, habe ich in der Methode, die aufgerufen wird, [self.nameInputTextField resignFirstResponder] sowie [self.view endEditing:YES] eine Zeile versucht, bevor ich den neuen Ansichtscontroller schiebe.

Der Rest der Klasse manipuliert den FirstResponder nicht.

Ich habe implementiert auch die UITextField Delegatmethode

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [self.nameInputTextField resignFirstResponder]; 
    return NO; 
} 

ich nicht alle damit verbundenen Fragen nach umfangreichen Suche gefunden. Es gibt viele ähnliche über zurücktretende Tastaturen, aber nicht in Bezug auf das Timing des Rücktritts der Tastatur, der verschoben wird, bis der Betrachtungsübergang abgeschlossen ist. Hinweis: Wenn Sie diese URL in Ihrem Browser neu laden, sehen Sie das Gif von Anfang an erneut.

enter image description here

+0

können Sie Ihren Code sehen? –

+0

teilen Sie bitte das Codebeispiel, das Sie in Ihrem Projekt verwenden. – Aamir

+0

Ich kann nicht viel teilen, es ist von eindeutig identifizierbarem Code in einer Sicherheits-App umgeben. Es tut uns leid. – jungledev

Antwort

0

ausblenden Tastatur überall in ios:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UIView * txt in self.view.subviews){ 
     if ([txt isKindOfClass:[UITextField class]] && [txt isFirstResponder]) { 
      [txt resignFirstResponder]; 
     } 
    } 
} 

ODER

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self.view endEditing:YES];  
} 
+0

Hat nicht funktioniert. Ich hatte wirklich gehofft, dass es so wäre, und es sieht definitiv so aus! – jungledev

+0

Sie müssen diese Methode nicht aufrufen, schreiben Sie einfach diese Methode und debuggen Sie über Breakpoint und Sie können Ihr Problem beheben. weil es gut funktioniert .. –

+0

Da Sie UIScrollView verwenden, können Sie möglicherweise keine Touch-Methode für UIScrollView erhalten. In diesem Fall müssen Sie möglicherweise UIGesture verwenden. –

0

Resign Tastatur auf viewWillDisappear und das Problem gelöst werden sollte.

bearbeiten

-(void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    self.nameInputTextField.text = @""; 
    [self.nameInputTextField resignFirstResponder]; 
} 
+0

Nein, habe es nicht behoben. Ich habe das schon versucht, aber ich habe es einfach nochmal probiert. – jungledev

+0

Sind Sie sicher, dass Sie die 'super viewWillDisappear' aufgerufen haben, weil ich ein ähnliches Problem hatte, und ich habe es in ähnlicher Weise angegangen. Vielleicht solltest du auch das Textfeld leeren. Ich habe sogar den Code für dich hinzugefügt. Versuche es. :) –

+0

FYI, ich kann Swift ganz gut lesen, aber es ist schön, wenn Sie eine Lösung in der gleichen Sprache, in der die Frage gestellt wird, einreichen. '- (void) viewWillDisappear: (BOOL) animiert { [super viewWillDisappear: YES]; [self.nameInputTextField resignFirstResponder]; } ' – jungledev

Verwandte Themen