scrollView.setContentOffset根本不会滚动视图

时间:2015-04-07 10:50:23

标签: ios uiscrollview

我一直关注this以及其他一些教程/博客等,试图让我的视图在用户点击“返回”时滚动,并以键盘覆盖的UITextField结束什么都没有实际工作。

我想知道我应该做什么或者缺少什么导致这个?

基本上:

  • 用户想在应用中执行某些操作:添加信用卡
  • 显示包含所有CC字段的UIView
  • 键盘覆盖了1/2的UITextField
  • 当用户到达时滚动视图。

什么都没发生。用于检测“由键盘覆盖”案例的代码正在被执行但是:[self.scrollView setContentOffset:scrollPoint animated:YES]完全没有效果。

思考?

显示屏幕截图:

代码:与链接中的教程相同。那里什么新鲜事。

3 个答案:

答案 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];});