可能重复Here& here(但他们没有解决我的问题)
我正在创建一个聊天用户界面,其中我的文本框必须同时具有多行功能和安全文本输入功能。
UITextField没有多行功能
UITextView没有安全文本输入功能
我现在该怎么办?
另一个疑问,如果UITextView的secureTextEntry无法正常工作,为什么他们将该属性放在UITextView类中
答案 0 :(得分:2)
只有UITextField支持secureTextEntry,制作完全由星号组成的字体,并在选择安全选项后在文本视图中使用它。另外一定要禁用复制。
答案 1 :(得分:1)
你可以使用hack。您可以使用delegate
的预定义UITextView
方法,textViewDidChange
因此,保持一个标志,以保持您是否想要安全进入的状态。
如,
NSString *originalText = @"";
BOOL isSecuredEntryOn = false;
每当您想添加true
BOOL isSecuredEntryOn = true;
现在这将是您的delegate
方法的代码:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
originalText = [originalText stringByAppendingString:text];
return YES;
}
- (void)textViewDidChange:(UITextView *)textView {
NSString *enteredText = textView.text;
textView.text = (isSecuredEntryOn) ? [enteredText stringByReplacingOccurrencesOfString:enteredText withString:[self getSecuredTextFor:enteredText]] : enteredText;
}
-(NSString *)getSecuredTextFor:(NSString *)stringToConvert {
NSString *securedString = @"";
for (int i = 0; i < stringToConvert.length; i++) {
securedString = [securedString stringByAppendingString:@"*"];
}
return securedString;
}
您可以使用任何内容代替*来获取安全文本。
答案 2 :(得分:0)
我通过继承UITextView
并添加一些类似于Pushkraj添加的属性来使其工作。它在很多情况下都可以完美运行(至少在撰写本文时……)。
我的完整答案是here。