Ios 我应该使用UILabel吗?
各位,我想知道在iOS中是否有一种方法可以只编辑一些单词,而不是全部通过键盘编辑。Ios 我应该使用UILabel吗?,ios,objective-c,cocoa-touch,uilabel,uitextview,Ios,Objective C,Cocoa Touch,Uilabel,Uitextview,各位,我想知道在iOS中是否有一种方法可以只编辑一些单词,而不是全部通过键盘编辑。 您认为使用NSStrings的NSMutableDictionary和指示它们是否可编辑的键,将它们显示在UILabel上会更好吗?然后,当我按下一个键(例如,backspace)时,我更新标签并删除最后一个字符(如果且仅当它是可编辑的)。 您有更好的想法吗?UITextField为您提供了此功能。将viewController设置为文本字段的代理(在故事板中,通过控制单击最左边的图标并选择“代理”或使用线sel
您认为使用
NSStrings
的NSMutableDictionary
和指示它们是否可编辑的键,将它们显示在UILabel
上会更好吗?然后,当我按下一个键(例如,backspace)时,我更新标签并删除最后一个字符(如果且仅当它是可编辑的)。您有更好的想法吗?UITextField为您提供了此功能。将viewController设置为文本字段的代理(在故事板中,通过控制单击最左边的图标并选择“代理”或使用线
self.textField.delegate=self
。确保在@界面中声明viewController是UITextField代理
在此基础上,您可以实现-(BOOL)textField:(UITextField*)textField shouldChangeCharactersRange:(NSRange)range replacementString:(NSString*)string
from。检查范围内的字符,查看它们是否是您希望编辑的字符。如果不是,则返回否
否则返回是
您无法编辑UILabels,因此应该使用UITextField进行此类行为。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;
}
非常感谢!我可以为“UITextField”创建自定义光标吗?非常感谢!我可以为“UITextField”创建自定义光标吗?您所说的“自定义光标”是什么意思?你的意思是要将UITextField子类化?我希望有一个类似终端应用程序中的光标:绿色和厚实。在iOS 7中,我可以更改光标的颜色吗?为此,我认为你最好使用UIScrollView。你能解释一下吗?