键盘在我的UITableViewController中隐藏文本字段,查看不滚动

时间:2013-06-12 16:20:36

标签: interface keyboard scroll uitableview

这是我的第一篇文章,当我遇到问题时,我总能在这里找到解决方案,但现在我真的卡住了。

我认为我已经阅读了与此问题相关的所有帖子,但没有运气。

我有一个表视图控制器,它包含多个自定义单元格,每个单元格内部都有一个文本字段输入。所以用户从顶部开始,插入第一个值,然后点击" Apply"键盘自定义工具栏上的按钮,控制下一个文本框。

工具栏显示但暂时不起作用,但无关紧要,因为当我在模拟器上按Enter键时,下一个文本框变为活动状态。

真正的问题是关于不滚动的观点!当我选择第一个文本框时它滚动,然后什么也没有。

我到处搜索,不幸的是我工作很多,而且我没有足够的时间独自解决这个问题。

也许这是我失踪的愚蠢事情,我希望有人可以提供帮助。

<。>文件中的

@interface PaginaCalcoliController : UITableViewController <UITextFieldDelegate> 

每个文本框都委托给PaginaCalcoliController,它是视图类。

对不起我的英语,我希望我们能找到解决方案!

2 个答案:

答案 0 :(得分:1)

我认为,要做到这一点是通过设置“contentInset”。 首先用UIViewController替换你的UITableviewController并将UITableview添加为子视图并连接tableview,datasource和delegate 然后, 喜欢这个, 把它放在视图didload方法中。

-(void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) 
                                                 name:UIKeyboardDidShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardDidDisappear:) name:UIKeyboardDidHideNotification object:nil];

}

-(void)keyboardDidShow:(NSNotification *)notification
{

    NSDictionary *info=[notification userInfo];
    NSValue *aValue=[info objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGRect keyBoardRect=[aValue CGRectValue];
    keyBoardRect=[self.view convertRect:keyBoardRect fromView:nil];
    CGFloat keyBoardTop=keyBoardRect.origin.y;

    tableView.contentInset=UIEdgeInsetsMake(0, 0, keyBoardTop+50, 0);
}

-(void)keyboardDidDisappear:(NSNotification *)notification
{
 tableView.contentInset=UIEdgeInsetsMake(10, 0, 10, 0);


}

希望这会有所帮助...... :)

答案 1 :(得分:1)

硬编码动画时间不是一个好主意。 0.25是键盘的默认值。更好地获得价值:

 NSNumber *rate = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey];