2015-10-06 71 views
0

我有一張桌子,下面是他們的bottomView。我的目標是在鍵盤上向上移動bottomview。但是當我們調整鍵盤時,此方法會更向上調用我的底部視圖。調整視圖高度

[self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, keyBoardheight, 0.0)]; 

然後動畫自定義底部的Y位置:我我也使用

- (void)textViewDidChange:(UITextView *)textView 
{ 
    CGFloat fixedWidth = textView.frame.size.width; 
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 
    CGRect newFrame = textView.frame; 
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); 
    textView.frame = newFrame; 
    CGRect frame1 = [UIScreen mainScreen].bounds; 
    bottomView.frame=CGRectMake(0, frame1.size.height-keyBoardHeight-20-newSize.height, self.view.frame.size.width, newSize.height+50); 



} 
+0

@ElCaptain我沒有使用約束 –

+0

您需要正確設置tableview的'contentInset'。將其高度組件設置爲鍵盤的高度。 – Abhinav

+0

@Abhinav請幫忙 –

回答

0

您需要在您的表視圖首先添加的空間,讓滾動卡

- (void)keyboardWasShown:(NSNotification*)aNotification 
{  
     NSDictionary* info = [aNotification userInfo]; 
     CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
    keyBoadSize =kbSize.height; 

     [UIView animateWithDuration:0.2f animations:^{ 
     CGRect frame=bottomView.frame; 
     keyBoardHeight = keyBoadSize; 


     frame.origin.y -=keyBoadSize; 
      bottomView.frame=frame; 
     frame = tableViews.frame; 
     frame.size.height -= keyBoardHeight; 
     tableViews.frame = frame; 



} 

視圖。

作爲一個附註,在您的示例代碼keyBoadSize是誤導。它應該是keyBoardheight

PS:不要忘記在鍵盤解除時重置滾動空間,如下所示:[self.tableView setContentInset:UIEdgeInsetsZero];

+0

它很適合桌面視圖,但不適合底部視圖 –

+0

自定義視圖是您桌子視圖的一部分。除非您不會在可滾動內容中添加空間,否則視圖將無法正確滾動。如果您閱讀我的回覆,我仍然要求您爲自定義底部視圖的Y位置設置動畫。 – Abhinav