代码之家  ›  专栏  ›  技术社区  ›  Ben Zotto sberry

允许在复杂的iphoneui上完成文本编辑的最佳方式

  •  1
  • Ben Zotto sberry  · 技术社区  · 14 年前

    我有一个有点复杂的iOS视图层次结构。一段文本是可编辑的UITextField。当用户触摸它时,它将成为第一响应者,并且是可编辑的。

    不过,问题是:最佳实践应该是,在编辑控件之外的任何位置进行触摸都会导致它退出第一响应程序并结束编辑。最好的方法是什么?

    我尝试过的技巧:

    1. exclusiveTouch 属性,它阻止用户与其他控件交互,但不会导致编辑结束。也不允许用户与我的工具栏“完成”按钮进行交互。
    2. 将一个透明的UIView放在文本字段控件下,并放在其他所有控件(工具栏除外)的顶部,然后使用触摸结束编辑。这是可行的,但我最终将文本字段重新出租到另一个位于整个层次结构之上的随机视图上,这意味着我必须在多个地方处理文本字段的布局,因为它不再位于原来的位置,我必须将它的所有行为从“shield”视图来回地委托给它的本地主容器,它有所有相关的逻辑。

    有没有一个优雅的解决方案,我错过了这个问题?我想这一定是一个常见的设计问题。

    3 回复  |  直到 14 年前
        1
  •  0
  •   Ben Zotto sberry    14 年前

    在textview周围平铺4个“透明”视图以捕获/忽略触摸。不需要修改或“提升”文本视图,并且可以以相当模块化的方式添加到父视图。

        2
  •  0
  •   matt    14 年前

    问题的核心是什么是“最佳做法”。除非用户将其拆除,否则键盘仍保留的事实是故意的。例如,许多应用程序需要用户能够在仍在文本字段中工作时点击按钮。

    键盘上有一个返回按钮。”“最佳实践”是对用户点击该按钮的反应,即退出第一响应者。否则,您应该将键盘留在那里,因为这是用户所期望的。

        3
  •  0
  •   Dharmesh Dhorajiya    9 年前

    如果将基础视图更改为 UIControl 您可以添加 IBAction 将文本字段改为第一响应者的层。

    另外,如果您有多个触摸事件,请确保每个事件都是相同的 becomeFirstResponder 当被触摸的时候。