使“UITextField”的某些部分不可选择

Posted

技术标签:

【中文标题】使“UITextField”的某些部分不可选择【英文标题】:Making some parts of a `UITextField` un-selectable 【发布时间】:2015-01-14 11:26:36 【问题描述】:

我有一个UITextField,它将表示一个带有分数(分子和分母)的整数。例如:"27 3/16"。我想让分母 "/16" 最后既不可编辑又不可选择

我可以使用委托方法textField:shouldChangeCharactersInRange:replacementString: 来防止"/16?" 被a bit like this 方法编辑。

有没有什么方法可以阻止"/16" 被选中?因此,插入符号不能移入其中,也不能围绕它进行选择标记。

如果这不可能,是否有一个钩子,以便用户完成选择后,我可以更新选择并将插入符号移动到这段文本之前。

谢谢。

【问题讨论】:

【参考方案1】:

您可以通过自动布局将 UILabel 和 UITextField 约束在彼此旁边,UILabel 包含分子,UITextField 包含分子。

这是一个关于如何做到这一点的已回答问题:Using Auto Layout to have UILabel and UITextField next to each other(本质是,您需要调整 UITextField 的内容拥抱优先级,使其始终与包含的文本一样宽。

如果您的文本字段太小而无法点击,您可以将此答案的代码应用到 UITextView 并使您的视图的可点击区域更大:UIButton: Making the hit area larger than the default hit area(但更好地使用方法调动而不是在答案中的类别!或子类。)

【讨论】:

有趣——我正在考虑这个问题,但没有考虑,因为我觉得空场的命中目标会变小。不过我会重新考虑……谢谢。 要使可点击区域更大,您也可以将此答案的代码应用于 UITextField,实际上应用于任何视图:***.com/questions/808503/…

以上是关于使“UITextField”的某些部分不可选择的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 和 UIButton 不可点击

屏幕的某些部分在 SWIFT 中不可点击

DataGridView:如何使某些单元格无法选择?

如何移动/动画 UITextField 占位符文本

如何告诉带有 UITextField 的自定义 UIView 接收触摸事件

如何在 React 中使用 Material-UI 在 onFocus 事件的 Textfield 中选择部分文本?