如何通过点击 UITextView ios 中的 return 键来创建新行
How to create a new line by tapping the return key in UITextView ios
我刚到 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;
}
提前致谢。
您应该使用 returning 值 NO 实现委托方法(因此点击 "return" 或 "done" 它不会关闭键盘)。
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
return NO;
}
并删除或更改下一行代码的逻辑:
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
}
所以在 textViewShouldEndEditing 中你可以 determine/calculate 需要关闭键盘的情况(如果你想关闭 - return 是,否则 return - 否)
您还可以更改
的逻辑
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
到
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
textView.text = [NSString stringWithFormat:@"%@\n\t",textView.text];
return NO;
}
}
在这种情况下,当用户点击键盘上的操作按钮时(如 "return")。 Textview 将在文本中插入新行和附加制表符。
希望对您有所帮助。
罪魁祸首是[textView resignFirstResponder];
。
你真的需要
- textView:shouldChangeTextInRange:replacementText:
?如果没有,只需删除整个方法,转到下一行是按 "done"(默认为 "return")键的默认行为,并且已被 [textView resignFirstResponder];
中的 [=] 修改11=]。如果你这样做,至少你需要删除[textView resignFirstResponder];
以避免你的描述。
swift 3 , 4
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == text.trimmingCharacters(in: .newlines) {
return true;
}else{
textView.resignFirstResponder()
return false
}
}
通过点击 UITextView 中的 return 键插入新行 ios
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if textView == textViewForChat
{
if (text == "\n")
{
textView.text = textView.text + "\n"
//textView.resignFirstResponder()
}
}
return true
}
我刚到 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;
}
提前致谢。
您应该使用 returning 值 NO 实现委托方法(因此点击 "return" 或 "done" 它不会关闭键盘)。
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
return NO;
}
并删除或更改下一行代码的逻辑:
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
}
所以在 textViewShouldEndEditing 中你可以 determine/calculate 需要关闭键盘的情况(如果你想关闭 - return 是,否则 return - 否)
您还可以更改
的逻辑
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
到
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
textView.text = [NSString stringWithFormat:@"%@\n\t",textView.text];
return NO;
}
}
在这种情况下,当用户点击键盘上的操作按钮时(如 "return")。 Textview 将在文本中插入新行和附加制表符。
希望对您有所帮助。
罪魁祸首是[textView resignFirstResponder];
。
你真的需要
- textView:shouldChangeTextInRange:replacementText:
?如果没有,只需删除整个方法,转到下一行是按 "done"(默认为 "return")键的默认行为,并且已被 [textView resignFirstResponder];
中的 [=] 修改11=]。如果你这样做,至少你需要删除[textView resignFirstResponder];
以避免你的描述。
swift 3 , 4
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == text.trimmingCharacters(in: .newlines) {
return true;
}else{
textView.resignFirstResponder()
return false
}
}
通过点击 UITextView 中的 return 键插入新行 ios
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if textView == textViewForChat
{
if (text == "\n")
{
textView.text = textView.text + "\n"
//textView.resignFirstResponder()
}
}
return true
}