使 `UITextField` 的某些部分不可选择

Making some parts of a `UITextField` un-selectable

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

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

有没有什么方法可以完全阻止 "/16" 被选中?因此,无法将插入符号移入其中,也无法在其周围创建选择标记。

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

谢谢。

您可以通过自动布局将 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(但最好使用方法调配而不是覆盖答案中类别中的方法!或子类。)