2017-02-24 62 views
0

我有一個用它的xib文件創建的exampleUIViewController。 mainView包含一些textFields。當點擊一個textField(開始編輯),I顯示鍵盤與動畫:鍵盤顯示時UIViewController寬度變化

- (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; 
} 

然後在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; 
} 

設定在I viewDidLoadself.initialFrame爲:

self.intialFrame = self.view.frame;

問題是,當顯示鍵盤時,mainView寬度變化並變大。

我做了什麼錯? 爲什麼我只有xib這個問題,而不是storyboard中創建的UIViewController? 我該如何解決這個問題?

回答

0

你不能在viewDidLoad中正確的幀大小(),嘗試viewDidAppear()

0

,如果你想獲得與廈門國際銀行或故事板視圖控制器正確的框架圖。不要誤會與

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

的最佳途徑查找來獲得正確的框架是

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