我有一個UITableView
,它比self.view
稍大。我在視圖的底部有一個UITextField
,我使用代理方法– textFieldDidBeginEditing:
在文本字段開始編輯時向上移動視圖。設置UITableView contentOffset,然後拖動,查看偏移量跳轉到新位置
這可以正常工作,但是如果我在編輯UITextField
時嘗試滾動視圖(並且內容已經偏移),那麼內容將跳轉到視圖底部「適當」的位置。換句話說,我設置的contentOffset.y
更改爲等於內容視圖的大小(正如您對正常行爲的期望值)。
任何想法如何在編輯時重載此行爲?
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
// Scroll to the currently editing text field
[self scrollViewToTextField:textField];
}
- (void)scrollViewToTextField:(id)textField
{
// Set the current _scrollOffset, so we can return the user after editing
_scrollOffsetY = self.tableView.contentOffset.y;
// Get a pointer to the text field's cell
UITableViewCell *theTextFieldCell = (UITableViewCell *)[textField superview];
// Get the text fields location
CGPoint point = [theTextFieldCell convertPoint:theTextFieldCell.frame.origin toView:self.tableView];
// Scroll to cell
[self.tableView setContentOffset:CGPointMake(0, point.y - 12) animated: YES];
}