【问题标题】:UIScrollView and multiple UITextFieldUIScrollView 和多个 UITextField
【发布时间】:2011-12-26 12:02:07
【问题描述】:

我对 uitextfield 和 uiscrollview 有一点问题,问题是当我点击 uitextfield 时,键盘会隐藏该字段,为了解决这个问题,我使用:

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField {

    CGRect viewFrame = self.scroll.frame;
    viewFrame.size.height -= 186;
    [self.scroll setFrame:viewFrame];

    return YES;
}

- (BOOL) textFieldShouldReturn:(UITextField *)textField{

    [self.scroll setFrame:CGRectMake(0, 0, 320, 480)];

    [self inserisciField];

    [textField resignFirstResponder];

    return YES;
}

所有工作,问题出在多个字段上,如果我更改字段而不单击返回,则选择一个字段,滚动视图的大小/位置错误,但如果我单击返回,然后我选择一个字段,按返回,更改字段,ecc...所有工作。

我认为存在这个问题,因为如果我更改字段,滚动尺寸会更改两次(第一次查看 frame.size.height -= 186,另一次使用 -=186)然后我尝试将这个方法

- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {

    [self.scroll setFrame:CGRectMake(0, 0, 320, 480)];

    return YES;
}

我在哪里设置了框架的默认大小,但什么都没有。

【问题讨论】:

  • 请看一下这个 S.O.文章:stackoverflow.com/questions/1126726/…
  • 我尝试了这种方法,但滚动视图仅在我编辑字段时向上滑动,而不是在我触摸字段时。正常吗?

标签: iphone uiscrollview uitextfield


【解决方案1】:

使用这个 -

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField {

    CGPoint point = CGPointMake(scroll.frame.origin.x, scroll.frame.origin.y + 186);
    [self.scroll setContentOffset:point];

    return YES;
}

- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {

    CGPoint point = CGPointMake(0, 0);
    [self.scroll setContentOffset:point];
}

【讨论】:

    【解决方案2】:

    当您触摸或编辑文本字段时,您可以使用滚动视图的 contentoffset 属性,因为它是解决您的问题的最佳解决方案,并且触摸和编辑是相同的过程 - 只有当您触摸该字段时,它才会变得可编辑。

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2011-02-10
      相关资源
      最近更新 更多