我应该使用UILabel吗?

时间:2013-09-14 17:28:05

标签: ios objective-c cocoa-touch uilabel uitextview

每个人,我想知道在iOS中是否有办法编辑一些单词,而不是全部通过键盘编辑。
您是否认为使用NSMutableDictionary NSStrings的{​​{1}}键可以指示它们是否可编辑,将它们显示在UILabel上?然后,当我按下一个键(例如,退格键)时,我更新标签并删除最后一个字符,当且仅当它是可编辑的时。
你有更好的想法吗?

2 个答案:

答案 0 :(得分:1)

UITextField为您提供此功能。将viewController设置为textField的委托(在storyboard中通过控件单击最左边的图标并选择“delegate”或使用行self.textField.delegate = self。确保在{{{}}中声明viewController是一个UITextField委托。 1}}。

您可以从那里UITextFieldDelegate实施@interface。检查范围中的字符,看看它们是否是您希望被编辑的字符。如果不是,- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 则为return NO

您无法编辑UILabel,因此您应该使用UITextField来实现此类行为。

答案 1 :(得分:0)

UILabel有只读文字。我认为您需要一个UITextField,您可以使用它的委托(UITextFieldDelegate)来管理文本编辑。您可以使用字典,但我认为包含所有可编辑字符的NSCharacterSet更适合。

会是这样的:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString* string= [textField.text substringWithRange: range];
    return [string rangeOfCharacterFromSet: self.nonEditableCharacterSet].location == NSNotFound;
}