UITextField编辑部分字符串

时间:2011-05-02 20:16:59

标签: iphone objective-c ios ios4 uitextfield

我希望能够在UITextField中编辑文本,如下所示: “第一部分[]第二部分”

  • 括号之间的部分应编辑
  • 如果我点击了文本字段并键入“foo”,它应该看起来像:“第一部分[foo]第二部分”
  • 如果你只是在一些文字的中间写作,我希望文本能够起作用
  • 用户不应该编辑第一部分和第二部分

我的第一种方法(在一些搜索之后)是使用文本字段leftView作为“第一部分”而右视图使用“第二部分”,两者都带有带文本的uilabel子视图。但我似乎无法正确定位。特别是让它适应动态...

我是否在正确的轨道上?有更优雅的方式吗?感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

UITextField委托协议中有一个方法应该完全符合您的要求:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

如果不改变“第一部分”和“第二部分”,您可以根据它们设置范围,即将范围的开头设置为“第一部分”的结尾和范围的结束为字符串的总长度减去“第二部分”的长度

答案 1 :(得分:0)

要获取中间UITextField的宽度,可以使用NSString的 - (CGSize)sizeWithFont:(UIFont *)字体并使用它来设置UITextField的大小。一旦你知道它的框架,你可以定位另外两个UILabel的框架。

另一种选择可能只是拥有一个字符串,但强制输入点位于[]之间,并禁止尝试将其设置在该范围之外。