我刚上iPhone。我在我的应用程序中使用XIB添加了一个UITextView,现在点击完成键后,它只是在为键盘重新签名。但是,我想通过点击它来创建新行,这意味着它应该转到下一段。请帮助我实现我的输出。这是我的代码:
- (void)textViewDidEndEditing:(UITextView *)textView1
{
if (![textView1 hasText]) {
[textView1 addSubview:placeholderLabel];
}
else{
NSLog(@"done button clicked!!");
}
CGRect rect;
if(screenBounds.size.height == 568)//iPhone5
{
rect = CGRectMake(5, 76, 310, 491);
}
else{
if(_kisiOS7){
rect = CGRectMake(5, 76, 310, 404);
}
else{
rect = CGRectMake(0, 44, 320, 436);
}
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
txtView.frame = rect;
[UIView commitAnimations];
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
}
return YES;
}
提前致谢。
您应该实现返回值为NO的委托方法(因此,在点击“ return”或“ done”时,它不会关闭键盘)。
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
return NO;
}
并删除或更改下一行代码的逻辑:
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
}
因此,在textViewShouldEndEditing中,您可以确定/计算需要关闭键盘时的情况(如果要关闭,请返回YES,否则请返回NO)
您也可以更改逻辑
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replaceText:(NSString *)text {
到
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
textView.text = [NSString stringWithFormat:@"%@\n\t",textView.text];
return NO;
}
}
在这种情况下,用户将点击键盘上的操作按钮(例如“返回”)。Textview将在文本中插入新行和其他选项卡。
希望对您有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句