UITextView : 文本从文本视图的第二行开始
Posted
技术标签:
【中文标题】UITextView : 文本从文本视图的第二行开始【英文标题】:UITextView : Text starts from 2nd line of text view 【发布时间】:2011-11-07 14:16:58 【问题描述】:我有一个奇怪的问题。我有 3 个UITextField
s 和一个UITextView
。我可以通过以下方式从一个UITextField
移动到下一个UITextField
:
- (BOOL) textFieldShouldReturn:(UITextField *)textField
NSInteger nextTag = textField.tag + 1;
//-- try to find next responde
UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder)
//-- found next responce ,so set it
[nextResponder becomeFirstResponder];
else
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
//-- not found remove keyboard
[textField resignFirstResponder];
return YES;
return YES;
一切正常,直到到达UITexView
,然后我的光标移动到文本视图的第二行,而不是文本视图的第一行。
文本视图取自 IB。
文本视图代码:
- (void) textViewDidBeginEditing:(UITextView *)textView
optionalText.hidden = YES ;
[scrollView setContentOffset:CGPointMake(0, textView.center.y-100) animated:YES];
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
// Any new character added is passed in as the "text" parameter
if ([text isEqualToString:@"\n"])
// Be sure to test for equality using the "isEqualToString" message
[textView resignFirstResponder];
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
// Return FALSE so that the final '\n' character doesn't get added
if ([[commentTxtView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0)
optionalText.hidden = NO ;
NSLog(@"Text View is null");
[scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
return FALSE;
return TRUE;
看起来像这样:
可能是什么问题?为什么不是从文本视图的第一行开始?
【问题讨论】:
在这种情况下什么是滚动视图?我会仔细检查这一行: [scrollView setContentOffset:CGPointMake(0, textView.center.y-100) animated:YES]; 你能告诉我们你在哪里调用你的 textFieldShouldReturn 方法吗?如果你像在视图生命周期的一开始那样调用它,因为你有多个 textField,条件“if (nextResponder)”会自动将你发送到下一个 textField。 【参考方案1】:我打赌你的textFieldShouldReturn:
应该返回NO
,以防nextResponder
是你的UITextField
。现在你总是返回YES
,这意味着密钥可能被传递给UITextView
,然后它将插入新行。
【讨论】:
那么我该如何解决呢?其实我只是把 [textView becomeFirstResponder];当 nextResponder 不可用时,在 textFieldShouldReturn 方法中。我知道这只是序列的问题,因为我知道我的文本视图何时是最后一个。【参考方案2】:对于任何来寻找 Swift 2.0 翻译的人...
在textFieldShouldReturn
在yourUIITextView.becomeFirstResponder()
之后返回true
,而不是返回false
。
为我工作!
希望这会有所帮助!
【讨论】:
谢谢。你节省了我的时间 +1以上是关于UITextView : 文本从文本视图的第二行开始的主要内容,如果未能解决你的问题,请参考以下文章