我的应用程序的前提很简单。用户在 textFields 和 textViews 中输入一些信息,保存时,TableView 会填充该信息(结合 Core Data 和 NSFetchedResultsController)。
在我的应用程序的版本 1 中,“添加条目”屏幕只有 UITextFields 而没有 UITextViews。在我的应用程序的 1.1 版本中,我带了一个用于笔记的 UITextView。默认文本是“附加说明:”,这是在 Storyboard 中设置的。
问题
我看到的是,如果我在版本 1 中创建一个条目,然后将我的应用程序从 Xcode 更新到版本 1.1,则当您在 UITableView 中单击它们时,现有条目不会显示“附加说明: “在 UITextView 中,直到我实际单击 UITextView 单元格,在这种情况下,我的 shouldBegin 方法被调用并显示它。但这是不可取的,因为升级的用户应该在现有条目的 UITextView 中看到“附加说明:”一词。 Additional Notes 本质上是一个“占位符”,所以如果您不输入任何注释,您应该总是看到这些词。
我已经在 Storyboard 的 UITextView 中设置了文本,但似乎没有任何效果。
我有两个不同的 View Controller ,用于创建一个新条目和在 Storyboard 中编辑一个条目(因为一些细微的调整),如果你添加一个新条目,它会显示 Additional Notes :"。如果你添加一个新条目但没有添加任何注释,当你编辑它时,你仍然会看到 Additional Notes: 这个词。但是,从应用程序版本 1 添加的条目在编辑时不会显示“Additional Notes:”这个词条目,我不明白为什么会这样。
这是我的两个主要方法:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
if([[textView text] isEqualToString:@"Additional Notes: "]){
[textView setText:@"Additional Notes:\n"];
}
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
if([[[textView text] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""]){
[textView setText:@"Additional Notes: "];
}
return YES;
}
所以我知道我遗漏了一些东西,但为什么已经升级的用户不能让现有条目在 UITextView 中显示单词 Additional Notes: 而无需单击它。
任何指导将不胜感激。
最佳答案
只需替换您的 TextView 文本名称中的 txt 消息文本,
-(void)viewWillAppear:(BOOL)animated
{
[txtmessage setText:@"Additional Notes:"];
[txtmessage setTextColor:[UIColor lightGrayColor]];
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
if(txtmessage.text.length == 0){
txtmessage.textColor = [UIColor lightGrayColor];
txtmessage.text = @"Additional Notes:";
[txtmessage resignFirstResponder];
}
return NO;
}
if(textView.text.length >=65)
{
[textView resignFirstResponder];
return NO;
}
if([text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location == NSNotFound) {
return YES;
}
[textView resignFirstResponder];
return NO;
return YES;
}
- (BOOL) textViewShouldBeginEditing:(UITextView *)textView
{
if (txtmessage.textColor == [UIColor lightGrayColor]) {
txtmessage.text = @"";
txtmessage.textColor = [UIColor blackColor];
}
return YES;
}
-(void) textViewDidChange:(UITextView *)textView
{
if(txtmessage.text.length == 0){
txtmessage.textColor = [UIColor lightGrayColor];
txtmessage.text = @"Additional Notes:";
[txtmessage resignFirstResponder];
}
}
关于ios - 应用程序更新后,UITextView 未填充默认文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006000/