2011-05-02 73 views
1

我希望能在一个的UITextField编辑的文字是这样的: “第一部分[]第二部分”的UITextField编辑部分字符串

  • 括号之间的部分应该被编辑
  • 如果我点击文本框并输入“foo”,它应该看起来像:“第一部分[foo]第二部分”
  • 我希望文本行为,如果您只是在文本中间写入
  • 用户应该不能编辑第一部分和第二部分

我的第一种方法(经过一些搜索)是使用textViews leftView作为“第一部分”,右侧使用view作为“第二部分”,两者都带有文本的uilabel子视图。但我似乎无法获得定位权。特别是让它动态适应...

我在正确的轨道上?有没有更好的方法来做到这一点?任何帮助表示赞赏,谢谢。

回答

0

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

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

2

有一个在的UITextField委托协议的方法应该做的正是你想要的东西:

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

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