我想在顯示鍵盤時在UITableView中滾動。我調整了TableView的大小,以便它不被鍵盤覆蓋。我重寫了textFieldShouldReturn函數以跳到我的UITableView中的下一個UITextField,並滾動到下一個字段。下面是我使用的代碼:UITableView不能正確滾動(或根本沒有)
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell *)[textField superview];
NSIndexPath *indexPath = [self.prefTableView indexPathForCell:cell];
NSString *nextRowKey = [preferences nextRowKeyAtIndexPath:indexPath];
[textField resignFirstResponder];
if (nextRowKey != nil) {
tagBeingEdited = textField.tag + 1;
NSIndexPath *nextIndexPath = [NSIndexPath indexPathForRow:indexPath.row+1
inSection:indexPath.section];
[self.prefTableView scrollToRowAtIndexPath:nextIndexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
//[self.prefTableView selectRowAtIndexPath:nextIndexPath
// animated:YES
// scrollPosition:UITableViewScrollPositionMiddle];
if ([[self.prefTableView indexPathsForVisibleRows] containsObject:indexPath] == YES) {
[[self.prefTableView viewWithTag:tagBeingEdited] becomeFirstResponder];
}
} else {
isEditing = NO;
}
return NO;
}
然而,我的觀點從未滾動。或者,如果我手動滾動視圖,它會回到頂部。爲什麼?
注意:我只使用scrollToRowAtIndexPath和selectRowAtIndexPath之一。我只是把他們倆都放在那裏,因爲我先嚐試了一個,然後嘗試了另一個。
是您的視圖控制器的UIViewController的一個子類?如果您改爲使用UITableViewController的子類,則可以更好地支持鍵盤+表格。例如,它將爲您處理UITableView的大小調整。 – occulus 2011-03-09 11:29:48
它是UITableViewController的子類。儘管如此,bahaviour和現在一樣。我在一些其他提示後將其更改爲UIViewController。這是我的視圖控制器聲明: @interface PreferencesController:UIViewController中 –
Arne
2011-03-09 13:26:48
我想多一點,增加了更多行,並啓用了細胞展示自己的選擇。選擇正確進行,但視圖幾乎任意滾動。 – Arne 2011-03-09 14:05:08