我一直关注this以及其他一些教程/博客等,试图让我的视图在用户点击“返回”时滚动,并以键盘覆盖的UITextField结束什么都没有实际工作。
我想知道我应该做什么或者缺少什么导致这个?
基本上:
什么都没发生。用于检测“由键盘覆盖”案例的代码正在被执行但是:[self.scrollView setContentOffset:scrollPoint animated:YES]
完全没有效果。
思考?
显示屏幕截图:
代码:与链接中的教程相同。那里什么新鲜事。
答案 0 :(得分:1)
您检查了contentSize属性吗?
要使滚动视图可滚动,内容必须大于显示区域(通常是滚动视图的边界)。
您可以通过显式设置默认为CGSizeZero的contentSize属性来实现此目的
此外,设置contentInset属性以调整显示区域的大小(在这种情况下,您可以设置底部值等于键盘高度)弹出键盘
答案 1 :(得分:0)
试试这个,
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[UIView animateWithDuration:0.25 animations:^{
[yourTextField setFrame:CGRectMake(yourTextField.frame.origin.x, yourTextField.frame.origin.y-keyboardHeight, yourTextField.frame.size.width, yourTextField.frame.size.height)];
}];
}
和
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[UIView animateWithDuration:0.25 animations:^{
[yourTextField setFrame:CGRectMake(yourTextField.frame.origin.x, yourTextField.frame.origin.y+keyboardHeight, yourTextField.frame.size.width, yourTextField.frame.size.height)];
}];
}
答案 2 :(得分:0)
我要做的是避免键盘覆盖textField,当用户触摸它时,将文本字段设置为屏幕顶部的动画,以便在完成后用键盘开始输入内容。在我看来,它更优雅。也许这可能是你的替代解决方案......我为不同数量的不同屏幕尺寸做了...当然你可能需要调整它...
所以请听一下textField委托并在
中- (void)textFieldDidBeginEditing:(UITextField *)textField {
你做了
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480){
({[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = -196; [self.view setFrame:frame]; [UIView commitAnimations];});
}
if(result.height == 568){
({[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = -196; [self.view setFrame:frame]; [UIView commitAnimations];});
}
if(result.height == 667){
({[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = -238; [self.view setFrame:frame]; [UIView commitAnimations];});
}
if(result.height == 736){
({[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = -251; [self.view setFrame:frame]; [UIView commitAnimations];});
}
并在
- (void)textFieldDidEndEditing:(UITextField *)textField {
你只是动画回来了
({[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = 0; [self.view setFrame:frame]; [UIView commitAnimations];});