ios - 应用程序更新后,UITextView 未填充默认文本

标签 ios core-data uitextfield uitextview

我的应用程序的前提很简单。用户在 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/

相关文章:

ios - AVAudioEngine 麦克风 float 数据

ios - 从字符串创建日期

ios - 是否可以有一个带有两个 UITableView 的 UIViewController,以及两个相应的 NSFetchedResultsController?

ios - 在 iOS 的 tableview 中动态搜索

ios - 关闭键盘时 UITextField 触发不需要的 segue

按下 UIButton 时,Swift 将文本保存到实例/全局变量

ios - 如何在 UIAlertAction 中传递多个处理程序

ios - 如何更改标签栏中未选中项目的颜色?

ios - 将 UIActivityViewIndicator 置于 UITableViewCell 的中心?

ios - 使用核心数据完全不相关的错误