2017-02-24 4 views
0

Ich habe eine exampleUIViewController mit seiner xib Datei erstellt. Die mainView enthält einige textFields. Wenn ein textField geklickt wird (die Bearbeitung beginnen), zeige ich die Tastatur mit Animation:UIViewController Breite ändern, wenn die Tastatur angezeigt wird

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

self.view.frame = self.initialFrame; 

[textField resignFirstResponder]; 

    [UIView animateWithDuration:0.25 animations:^ 
    { 
     CGRect newFrame = [view frame]; 
     newFrame.origin.y -= PORTRAIT_KEYBOARD_HEIGHT; 
     [view setFrame:newFrame]; 

    }completion:^(BOOL finished) 
    { 

    }]; 
return YES; 
} 

Dann in den textFieldShouldReturn:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 

self.view.frame = self.initialFrame; 
[textField resignFirstResponder]; 

    [UIView animateWithDuration:0.25 animations:^ 
    { 
     CGRect newFrame = [view frame]; 
     newFrame.origin.y += PORTRAIT_KEYBOARD_HEIGHT; 
     [view setFrame:newFrame]; 

    }completion:^(BOOL finished) 
    { 

    }]; 

return YES; 
} 

Im viewDidLoad stellte ich die self.initialFrame als:

self.intialFrame = self.view.frame;

Das Problem ist, dass, wenn die Tastatur angezeigt wird, die mainView Breite ändern und größer werden.

Was ist los mit dem, was ich getan habe? Warum habe ich dieses Problem nur mit xib und nicht auch mit einem UIViewController im storyboard erstellt? Wie kann ich dieses Problem lösen?

Antwort

0

Sie können nicht die richtige Rahmengröße bei viewDidLoad get(), versuchen Sie auf viewDidAppear()

0

, wenn Sie die richtige Rahmenansicht mit einem xib oder Storyboard Viewcontroller erhalten möchten. Nicht den Blick bekommen mit

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

Der beste Weg, den richtigen Rahmen zu bekommen, ist

- (void) viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    self.intialFrame = self.view.frame; 
} 
Verwandte Themen