【问题标题】:Disable the Go button in the Keyboard for a UITextfield in iphone app在 iphone 应用程序中为 UITextfield 禁用键盘中的 Go 按钮
【发布时间】:2011-01-15 21:52:47
【问题描述】:

我的应用有一个屏幕,其中键盘始终可见。屏幕的主要元素是 UITextfield。为了方便数据输入,键盘始终可见。当用户完成输入数据并点击 Go 时,应用程序会执行一个 4.5 秒的操作,该操作在后台线程中完成,以显示 UIActivityIndi​​catorView。

我的问题是键盘上的 Go 按钮仍然显示为启用,因为逻辑是在后台执行的。用户可能会再次点击 Go 导致它再次运行。

我无法将可编辑/用户交互属性设置为否,因为这样键盘就会消失。无论如何只是禁用Go按钮或冻结键盘直到后台线程返回?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    你显然已经设置了一个 UITextFieldDelegate 来处理:

    - (BOOL)textFieldShouldReturn:(UITextField *)theTextField;
    

    否则,您将无法执行相应的操作。如果后台进程正在运行并且键盘不应该关闭,只需从该函数返回NO。示例:

    - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
      if (alreadyPressedGo)
        return NO;
      ...
    }
    

    但是,这不会“禁用”“开始”按钮,只是禁用其功能。

    【讨论】:

    • 我想过这个。给用户一种正在执行他的动作的感觉会很好。他可能会因为看到蓝色按钮而感到困惑,然后尝试再次单击。同意有一个活动指示器,但很容易错过,因为它离键盘不远。
    • 出于好奇,为什么不按下 Go 键后关闭键盘?你提到的易用性。不幸的是,Apple 通过关闭 UIKeyboard 来强制所有开发人员进行人机交互设计......
    • 如果键盘被持久化,你认为他们会拒绝应用吗?
    • 我真的不这么认为,但 Apple 确实坚持你要遵守他们的 UI 规则(提交指南 10.1)。我没有梳理过这两个人机界面参考资料,但我确定键盘在某处,或者至少是文本输入。
    • 好的,酷..我不一定同意它,但要求是始终保持键盘可见。我会看看会发生什么。
    【解决方案2】:

    我还没有尝试过(目前不在 OS X 机器上,否则我会试一试),但我想知道您是否无法通过触摸接收 UIImageView 或类似内容来有效禁用它在它的上面。 (您甚至可以相应地设置 UIImageView 的不透明度以实现灰色外观。)

    这与禁用按钮的操作相结合,如@Skyler 所示应该是理想的。

    【讨论】:

    • 这也是个好主意。我可以将灰色按钮放在蓝色的顶部,并仅在需要时才显示它,尽管它是一个延伸。
    • @coder net - 认为在处理后台任务时遮盖整个屏幕(最重要的是 UIActivityIndi​​catorView)可能会更轻松。
    • 有没有办法轻松做到这一点?我的意思是我现在只有 UIActivityIndi​​cator 控件(不是单独的视图),它位于视图中的某个位置。如果它有一个启用全屏视图的设置,那就太好了。
    猜你喜欢
    • 2011-09-06
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多