我有一個分割視圖控制器:查看& tableview。在這個表格視圖中,我有自定義單元格和文本字段。我不知道我會有多少個細胞,所以它會自動生成。現在我試圖滾動到文本框,當它成爲FirstResponder。我試過這樣的事情:獲取單元格或文本字段在此單元格中的位置
-(void) textFieldDidBeginEditing:(UITextField *)textField {
CGPoint focusOnTextField = CGPointMake(0, 300 + textField.frame.origin.y);
[scroller setContentOffset: focusOnTextField animated: YES];
}
300px - 我的TableView的開始位置。所有似乎都沒問題,但textField.frame.origin.y
總是等於0(像和bounds.origin.y
順便說一句)。
我以爲我可以解決一個問題,如果獲取單元格的位置,哪個文本字段是活動的,然後替換textField.frame.origin.y
在cell.frame.origin.y
或類似的東西。
============================================= ======================
我忘了說,我的tableviews滾動被禁用。我遵循你的建議和代碼示例,並像這樣解決:
- (UITableViewCell *)cellWithSubview:(UIView *)subview {
while (subview && ![subview isKindOfClass:[UITableViewCell self]])
subview = subview.superview;
return (UITableViewCell *)subview;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
UITableViewCell *activeCell = [self cellWithSubview:textField];
float offsetValueY = 200 + activeCell.origin.y;
CGPoint focusOnTextField = CGPointMake(0, offsetValueY);
[scroller setContentOffset:focusOnTextField animated:YES];
}
而且知道什麼?它正在工作! :-)但它造成了一個新問題。當我開始編輯文本框時,滾動條首先跳到頂部,然後才轉到正確的位置。當我寫[scroller setContentOffset:focusOnTextField animated:NO];
這個問題消失了,但是沒有平滑的滾動條。這對我來說很糟糕:-)那麼我們如何解決它呢?