簡體   English   中英

UITableViewController和UITextField鍵盤

[英]UITableViewController and UITextField keyboard

我有一個帶有分組靜態UITableView的UITableViewController。 我在故事板上為我的靜態表視圖定義單元格。 其中一個單元格中有一個文本字段。 當調用此文本字段時,鍵盤會彈出,但是,表視圖不會像通常在表視圖控制器上那樣自動調整大小。 所以現在鍵盤部分覆蓋文本區域,我無法向上滾動。

我的理解是,當您使用UITableViewController和tableview時,可調區域應該在調用鍵盤時自動縮小。 它確實在我的應用程序的其他部分中工作,而不是使用此靜態表視圖。 它不適用於靜態表嗎? 還有其他我想念的東西嗎? 有沒有簡單的方法來解決這個問題?

謝謝

回答

它與靜態細胞無關。 他們應該工作。

如果您的控制器已經是UITableViewController,請檢查您是否使用了viewWillAppear方法。 如果你這樣做,你必須調用[super viewWillAppear:YES]來使“自動行為”起作用。

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES]; // This line is needed for the 'auto slide up'
   // Do other stuff
}

此問題很容易出現,因為控制器的樣板代碼沒有隨viewWillAppear方法調用一起提供,如果在控制器中定義它,則會覆蓋它。

額外的信息

看看這個鏈接。

Apple Table View編程指南

注意:UITableViewController在iOS 3.0中具有新功能。 表視圖控制器支持對表視圖行進行內聯編輯; 例如,如果行在編輯模式下嵌入了文本字段,它會將正在編輯的行滾動到顯示的虛擬鍵盤上方....等等....

重要的一點

UITableViewController類通過重寫loadView,viewWillAppear:和從UIViewController繼承的其他方法來實現上述行為。 在UITableViewController的子類中,您還可以覆蓋這些方法以獲取特殊行為。 如果您確實覆蓋了這些方法,請確保通常作為第一個方法調用來調用方法的超類實現,以獲取默認行為。

對於斯威夫特

override func viewWillAppear(animated: Bool) {

   super.viewWillAppear(animated)

}

如果選擇其中一個表格進行編輯,則推送視圖(需要鍵盤通知實現)

- (void) keyboardDidShow:(NSNotification *)aNotification
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.25];
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y-moveAmount);
    [UIView commitAnimations];
    isRaised = [NSNumber numberWithBool:YES];
}

調整表格大小(將高度除以2)。 將其交換到鍵盤上顯示方法。 另外,你可以使用鍵盤做隱藏方法來撤消這些東西。

CGRect temp = CGRectMake(mineTable.frame.origin.x, mineTable.frame.origin.y, mineTable.frame.size.width, mineTable.frame.size.height/2);
mineTable.frame = temp;

暫無
暫無

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

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