[英]Using a segue from a UIViewController with UItextfield to populate a UITableViewController
[英]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
方法調用一起提供,如果在控制器中定義它,則會覆蓋它。
額外的信息
看看這個鏈接。
注意: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.