我已经用一些自定义单元格创建了一个tableview。一些自定义单元格包含UIWebView
,有些自定义单元格包含UISlider
加UITextField
,有些自定义单元格包含UIButton
。
现在,当我点击UITableView
底部的uitableviewcell子视图的文本字段时,我无法在键盘上方显示我的表格单元格。
我无法使用UITableViewController
代替UIViewController
。因为我的UI结构有点怪异和动态。简单来说就像
UIView -> UIScrollView with paging -> x number of UITableViews -> y number of UITableViewCell -> z number of UITextFields, UISliders, UIWebViews, UIButtons, UILables, etc.
我也试过下面的代码来使它工作。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
[table_Question[pageNumber] scrollToRowAtIndexPath:[table_Question[pageNumber] indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
但它不起作用:(
谢谢,
编辑1:
我检查了textfield,tableviewcell和tableview的引用。所以对象的引用不是问题。
答案 0 :(得分:2)
试试这个代码......
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
NSIndexPath *indexPath = [[table_Question[pageNumber] indexPathForCell:cell];
int totalRows = 0;
if([[table_Question[pageNumber] numberOfSections] > 1)
{
for(int i = 0; i<([indexPath.section] - 1);i++)
{
totalRows += [[table_Question[pageNumber] numberOfRowsInSection:i];
}
}
totalRows += indexPath.row;
int yPosition = totalRows * cell.frame.size.height;
CGPoint offset = CGPointMake(0, yPosition);
[[table_Question[pageNumber] setContentOffset:offset animated:YES];
}
这对你有帮助......
答案 1 :(得分:1)
根据我的理解,当用户开始编辑UITextField
内的UITextField
时,您希望显示UITableViewCell
以及键盘。
如果是这种情况,您可以将contentInset
的{{1}}设置为所需的大小,然后滚动到所需的索引路径。
UITableView
答案 2 :(得分:1)
试试此代码
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
UITableViewCell *aCell = [table_Question[pageNumber] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
CGSize cellSize = aCell.frame.size;
[table_Question[pageNumber] setContentOffset:CGPointMake(0, cellSize.height*2) animated:YES];
}