• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

TextView verschieben und wieder anpassen

LangTsu

Erdapfel
Registriert
14.03.13
Beiträge
2
Hallo zusammen,

wenn ich auf ein Textfeld in meiner app geklickt habe hat die Tastatur mein Textfeld verdeckt.
Ich habe im Internet nach diesem Problem gesucht und habe diesen Code gefunden:

Code:
-(void)viewDidAppear:(BOOL)animated 
{    
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];    
[notificationCenter addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil];    
[notificationCenter addObserver:self selector:@selector(keyboardWillDisappear:) name:UIKeyboardWillHideNotification object:nil];
}

-(void)keyboardWillAppear:(NSNotification *)notification 
{   
 NSValue *keyboardValue = [notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey];    
UIView *entryView = self.view;    
CGRect keyboardFrame = [entryView.window convertRect:[keyboardValue CGRectValue] toView:entryView];        
keyboardFrame = CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.frame), CGRectGetHeight(keyboardFrame));    

keyboardFrame = [entryView convertRect:keyboardFrame toView:textView.superview];    
[UIView beginAnimations:nil context:nil];    
self.textView.frame = keyboardFrame;    
[UIView commitAnimations];
}

-(void)keyboardWillDisappear:(NSNotification *)notification 
{    
[UIView beginAnimations:nil context:nil];    
textView.frame = CGRectInset(textView.superview.bounds, 10.0, 10.0);    
[UIView commitAnimations];
}

Wenn ich jetzt meine Tastatur wieder schließe verschiebt sich das Textfeld allerdings nicht wieder an seinen ursprünglichen
Platz.

Ich habe schon nach der Funktion 'CGRectInsert' gegoogelt und mir das durch gelesen weil ich mir eigendlich sicher bin das es an der Zeile

Code:
textView.frame = CGRectInset(textView.superview.bounds, 10.0, 10.0);

liegt, und die 10.0 und 10.0 das Problem sind.
Aber das hat mir auch nicht weiter geholfen.

Wie kann ich meine ursprünglichen Koordinaten herrausfinden?
Oder was kann/muss ich dort eintragen damit sich mein Textfeld wieder an den richtigen Platz verschiebt?

Vielen Dank
smile.png
 
Du könntest ja deine ursprünglichen Koordinaten vor dem überschreiben auf eine externe Variable speichern. :)
 
Du könntest das Ganze auch auf einen TableViewController aufetzen. Dann bekommst du das ganze Geschiebe alles for free ohne das du eine Zeile Code schreiben musst. Dann baust du die TextView einfach in eine Zelle ein. Ansonsten müsstest du nämliich auch noch überprüfen wie es sich mit der Tastatur verhält wenn der User das iPhone im Landscapemodus bedient. Dann hast du wieder völlig andere Koordinaten usw. Also besser gleich auf einen TableViewController aufsetzen.