5 Stimmen

Wenn ich in textView auf die Schaltfläche "Erledigt" klicke, wird die Tastatur nicht verlassen

Ich habe ein Problem beim Zurücktreten der Tastatur, nachdem ich auf die Schaltfläche "Fertig" geklickt habe. Ich verwende textView

-(BOOL)textViewShouldReturn:(UITextView *)textView
{
    if(textView == addressView)
    {
        if(isNotif)
        {
            [self setViewMovedUp:NO];
        }
        textView.text= [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        [addressView resignFirstResponder];
    }
    return YES;
}

Anstatt die Tastatur zu verlassen, springt der Cursor in eine neue Zeile im Textfeld. Bitte helfen Sie mir.

Dankeschön Praveena.

3 Stimmen

Es gibt keinen solchen Delegaten -(BOOL)textViewShouldReturn:(UITextView *)textView

5voto

Jacek Kwiecień Punkte 12035

Die Antwort von KingOfBliss wurde korrigiert:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{       
    if (textView == messageInput) {
        if ([text isEqualToString:@"\n"]) {
            [textView resignFirstResponder];
            return NO;
        }
    }
    return YES;
}

4voto

KingofBliss Punkte 15007

Verwenden Sie den folgenden Delegierten

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if (textView == YourTextField){
        if ([text isEqualToString:@"\n"]) {
                [textView resignFirstResponder];
                return NO;
        }
    }
    return YES;
}

Normalerweise wird in textView die Return-Taste verwendet, um die \n zum Text, so dass es besser ist, eine andere Schaltfläche oben auf dem UItextView hinzuzufügen und die Rücktrittsfunktion dort zu codieren.

EDIT:

Es gibt keinen solchen Delegierten -(BOOL)textViewShouldReturn:(UITextView *)textView

1voto

Nathan Punkte 180

Dies geschieht, wenn der ViewController, der in der View-Hierarchie über dieser textView steht, nicht der Delegierte dieser textView ist. Wenn dies nicht der Fall ist, wird der ViewController niemals die Nachricht textViewShouldReturn erhalten. Im ViewController, nachdem die SubView (die UITextView) erstellt wurde.

aTextView.delegate = self;

Um zu überprüfen, ob die Funktion aufgerufen wird, fügen Sie Folgendes zu Ihrer Funktion hinzu und testen Sie

NSLog(@"resigning first responder");

dies prüft, ob diese Funktion überhaupt aufgerufen wird

0voto

Erim Franci Punkte 95
if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }

war in meinem Fall ausreichend.

0 Stimmen

Dieser Codeschnipsel kann die Frage zwar lösen, einschließlich einer Erläuterung trägt wirklich dazu bei, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für künftige Leserinnen und Leser beantworten, die die Gründe für Ihren Code-Vorschlag möglicherweise nicht kennen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X