我的应用程序的前提很简单。用户在textFields和textViews中输入一些信息,保存后,TableView将填充该信息(包含Core Data和NSFetchedResultsController的组合)。
在我的应用的第1版中,“添加条目”屏幕只有UITextFields而没有UITextViews。在我的应用程序的1.1版中,我带了一个UITextView笔记。默认文本为“附加注释:”,这是在故事板中设置的。
问题
我所看到的是,如果我在版本1中创建一个条目,然后从Xcode将我的应用程序更新到1.1版,那么当您在UITableView中单击它们时,现有条目不会显示“附加注释: “在UITextView中,直到我实际点击UITextView单元格,在这种情况下,我的shouldBegin方法被调用并显示它。这是不可取的,因为升级的用户应该在UITextView中看到现有条目的“附加说明:”一词。基本上附加注释是一个“占位符”,所以如果你没有输入任何注释,你应该总是看到这些单词。
我在故事板中的UITextView中设置了文本,但似乎没有任何效果。
我有两个不同的视图控制器,用于创建新条目并在Storyboard中编辑条目(由于一些小的调整),如果添加新条目,它会显示“附加注释”一词:“。如果添加新条目但是没有添加任何注释,当你编辑它时,你仍然会看到“附加注释”一词:但是,从应用版本1添加的条目在编辑时没有显示“附加注释:”这个词条目,我不明白为什么会这样。
以下是我的两个主要方法:
- (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:而不必点击它。
任何指导都会非常感激。
答案 0 :(得分:1)
只需替换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];
}
}