这是我的第一篇文章,当我遇到问题时,我总能在这里找到解决方案,但现在我真的卡住了。
我认为我已经阅读了与此问题相关的所有帖子,但没有运气。
我有一个表视图控制器,它包含多个自定义单元格,每个单元格内部都有一个文本字段输入。所以用户从顶部开始,插入第一个值,然后点击" Apply"键盘自定义工具栏上的按钮,控制下一个文本框。
工具栏显示但暂时不起作用,但无关紧要,因为当我在模拟器上按Enter键时,下一个文本框变为活动状态。
真正的问题是关于不滚动的观点!当我选择第一个文本框时它滚动,然后什么也没有。
我到处搜索,不幸的是我工作很多,而且我没有足够的时间独自解决这个问题。
也许这是我失踪的愚蠢事情,我希望有人可以提供帮助。
<。>文件中的:
@interface PaginaCalcoliController : UITableViewController <UITextFieldDelegate>
每个文本框都委托给PaginaCalcoliController,它是视图类。
对不起我的英语,我希望我们能找到解决方案!
答案 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];