簡體   English   中英

鍵盤彈出時如何為UITableView設置動畫?

[英]How to animate up UITableView when Keyboard pops up?

我有10行的UITableView 每個單元格中都有一個UITextField

問題是,當我單擊底部單元格中的UITextField時,鍵盤彈出並阻止該單元格。 我該如何處理? 我是否需要為tableview設置動畫?

更新的代碼:

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    self.vitalsTableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
    NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow];
    [self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

使用- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated UITableView的- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated方法

例:

[tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

會將您的tableView滾動到盡可能低的偏移量,以保持該單元格可見。 如果單元格下面沒有足夠的單元格,則可以為表設置contentInset以允許滾動偏移量。

也許您的UITextField委托是表視圖控制器。 您可以在- (void)textFieldDidBeginEditing:(UITextField *)textField上進行調用

對於底部單元格:

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    tableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
    [tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    tableView.contentInset=UIEdgeInsetsMake(0,0,0,0);
}

在任何情況下,將運行在iOS中7同樣的問題:我發現這個問題是發生在我身上,只是因為我忘了打電話給超類的實現的viewWillAppear:在我自己的viewWillAppear:實施。 一行解決了該問題:

-(void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  // Do whatever you need to
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM