【问题标题】:iOS - Disable Scrolling when Editing Text FieldiOS - 编辑文本字段时禁用滚动
【发布时间】:2012-08-27 03:28:37
【问题描述】:

我试图在编辑 uitextfiled 时禁用滚动(最好是所有背景触摸)。

这是场景:

我有一个带有多个文本字段的 ScrollView 设置。在编辑文本字段时,我向上/向下动画视图,以便文本字段将位于键盘/小键盘出现的正上方。在我将键盘样式更改为电话/数字键盘的情况下,我有一个带有完成按钮的子视图设置,可在编辑完成时关闭键盘。所有动画都按预期工作。但是,用户可以滚动背景并选择其他字段。我想禁用此功能,以便他们能做的就是查看屏幕上显示的内容并编辑一个字段。

我已尝试执行 [scrollView setUserInteractionEnabled:NO] 将滚动视图锁定到位,但是无法使用键盘在文本字段中输入信息。在键盘设置为电话/数字键盘的情况下,我的子视图再次出现,只是没有键盘。

我也尝试将正在编辑的文本字段设置为第一响应者,但这似乎完全弄乱了视图,可能是由于我的视图子视图的动画。

有没有办法让我仍然按照我想要的方式为视图设置动画并禁用滚动视图的滚动,或者完全禁用该视图中的所有背景触摸?

【问题讨论】:

  • 您是否尝试过在didBeginEditing 中禁用滚动?
  • 我没有尝试过,但会试一试。
  • 我确实尝试将禁用滚动添加到 didBeginEditing 中,但这不起作用。滚动视图按预期锁定,但键盘不可见。

标签: iphone ios ipad uiscrollview uitextfield


【解决方案1】:

让您的 viewController 成为 textField 的代表,并在 - (void)textFieldDidBeginEditing:(UITextField *)textField 中禁用滚动。self.scrollView.scrollEnabled = NO; 和 - (void)textFieldDidEndEditing:(UITextField *)textField 再次设置滚动启用...

您还可以根据您的要求禁用所有其他文本字段。

self.otherTextField.userInteractionEnabled = NO;

希望这会有所帮助。

【讨论】:

  • Ankit,我尝试了你的建议,我明白那里发生了什么,但是当我说我想禁用其他文本字段时我确实犯了一个错误。我实际上需要禁用屏幕上的所有按钮/选项。在发布的所有内容中,[view setUserInteractionEnabled:NO] 提供了我正在寻找的确切功能。我在使用这种方法时遇到的问题是在文本字段上。当我单击文本字段并在 didBeginEditing 方法上执行 [view setUserInteractionEnabled:NO] 时,键盘不可见。有没有办法使用该调用并使键盘可见?
【解决方案2】:

试试这个

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    scrollView.scrollEnabled = NO;
}

- (void)textFieldDidEndEditing:(UITextField *)textField{
    scrollView.scrollEnabled = YES;
}

【讨论】:

    【解决方案3】:

    你试过了吗:

    scrollView.scrollEnabled = NO 
    

    ?

    【讨论】:

    • 我做了,但用户仍然可以选择屏幕上的其他字段。我也试图避免这种情况。
    • 正如Ankit所说,self.otherTextField.userInteractionEnabled = NO;
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2017-11-13
    • 1970-01-01
    相关资源
    最近更新 更多