Tôi có một số UITableView
lớn hơn self.view
. Tôi có một số UITextField
ở cuối chế độ xem và tôi sử dụng phương thức ủy quyền – textFieldDidBeginEditing:
để di chuyển chế độ xem lên khi trường văn bản bắt đầu chỉnh sửa.Đặt nội dung UITableViewTắt, sau đó kéo, xem chuyển đổi bù trừ sang vị trí mới
Điều này làm việc tốt, nhưng nếu tôi cố gắng cuộn chế độ xem trong khi UITextField
đang được chỉnh sửa (và nội dung đã được bù đắp) thì nội dung sẽ chuyển xuống vị trí 'thích hợp' ở dưới cùng cho chế độ xem. Nói cách khác, contentOffset.y
Tôi đặt được thay đổi bằng với kích thước của chế độ xem nội dung (như bạn mong đợi đối với hành vi thông thường).
Mọi ý tưởng về cách vượt qua hành vi này trong khi chỉnh sửa?
- (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];
}