【问题标题】:iOS 5: Input placeholder doesn't clear on focus, only on input, bug or feature?iOS 5:输入占位符在焦点上不明确,仅在输入、错误或功能上?
【发布时间】:2012-11-29 15:45:29
【问题描述】:

在 iOS 5 模拟器中使用我的 Web 应用程序时,我注意到 iOS 5 不会立即清除占位符,只有在第一次输入之后。在所有其他版本的 iOS 以及所有桌面浏览器上,当用户专注于输入时,占位符会立即被清除。我现在无法访问 iOS 5 设备,但我非常怀疑这是模拟器错误。

这是一个错误还是故意的?奇怪的是,我只在网上找到了一个关于这种行为的参考,就在这里:clearing input placeholder in iOS5

是否有解决此问题的方法?当占位符没有立即清除时,用户会感到非常沮丧。

【问题讨论】:

    标签: ios ios5 uiwebview cordova mobile-safari


    【解决方案1】:

    我认为你错了 - iOS 文本字段总是这样。

    我不明白为什么这会让用户感到沮丧。如果有任何帮助,帮助文本在他们开始输入之前保持可见,以防他们在选择字段之前错过它。

    您可能会感到困惑的是,iOS 字段有一个单独的可选行为,即在选择字段时清除文本,但请注意,这是清除的 实际文本,而不是 占位符文本。

    占位符文本是浅灰色文本,在用户输入内容之前始终显示。

    内容文本(通常为黑色)有时会在字段获得焦点时清除,有时不会清除,具体取决于 UITextField 的配置方式。

    您链接到的 SO 问题中的 jQuery 解决方案应该允许您复制您想要的此功能的任何变体,但我个人建议坚持 iOS 约定,即在用户键入内容之前不清除帮助文本。

    【讨论】:

    • 感谢您的信息。我认为这是有意的,因为我没有在网上找到其他人提到这一点。我同意在用户开始输入之前文本一直保留在那里是有道理的,但正如我所说,所有其他浏览器的行为都不同并且会立即清除文本。参见例如this demo。我刚刚检查了一堆最近的(桌面)浏览器。
    • 是的,它是 iOS 平台标准,而不是通用的 Web 标准。
    【解决方案2】:

    这不是一个错误,它是一个功能。您可以使用委托方法来清除占位符。 (UITextFieldDelegatehttp://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html)

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
      [textField setPlaceholder:@""];
    }
    

    adn你应该在完成编辑后控制它的空白。

    - (void)textFieldDidEndEditing:(UITextField *)textField
    {
      if ([textField.text isEqualToString:@""])
        [textField setPlaceholder:@"Placeholder Text"];
    
    }
    

    【讨论】:

    • 该问题与 PhoneGap 有关 - 即文本字段是 web 视图中的 html 输入字段,而不是本机 UITextField 控件。
    • @Nick-Lockwood:感谢您澄清这一点。这不是 PhoneGap 特定的,因为我注意到移动 Safari 中也会发生这种行为。
    • @mobweb 无论如何它是 UIWebView 的问题。这改变了一切:)
    猜你喜欢
    • 2021-02-15
    • 2017-07-03
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2013-08-11
    • 2019-06-22
    相关资源
    最近更新 更多