所以我有一个UITextField,它是页面打开时的第一个响应者(工作正常)。然后我有一个UITextView,它成为用户按下返回时的第一个响应者,这就是我的问题所在。当按下返回的东西似乎与第一响应者一起正常工作,但UITextView添加一行并开始在第二行闪烁的光标..有没有人可以帮助我?提前谢谢!
这是开关
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
[self.fieldDescription.textView becomeFirstResponder];
return YES;
}
查看图标闪烁的位置?当第一个响应者改变时,这就是它开始的地方......
答案 0 :(得分:15)
很棒的问题和描述。我遇到了同样的问题。
这个帖子没有答案为我解决了。有人在another thread的评论(@AndreiRadulescu)中添加了一个链接。 @rmaddy在该线程上的回答解决了它。他的回答是:
解决此问题的一个解决方案是实施 textFieldShouldReturn:委托方法,请务必返回NO,而不是 是。通过返回NO,换行符不会传递到文本字段。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
// move to next field or whatever you need
[myTextView becomeFirstResponder];
return NO;
}
在斯威夫特:
//Dismisses keyboard upon tapping the return key
func textFieldShouldReturn(textField: UITextField) -> Bool {
txtTask.resignFirstResponder()
return false
}
答案 1 :(得分:2)
TextView有一个委托方法,用于检查用户输入的字符
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
使用此功能可以停止新行并返回键盘,请参阅下面的代码
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([textView.text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
答案 2 :(得分:1)
尝试使用此
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self.fieldDescription becomeFirstResponder];
}
而不是
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
textFieldShouldReturn
- >自动辞职第一响应者
答案 3 :(得分:0)
我的情况,我只是在textViewShouldBeginEditing
时设置了一个空白文本- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
self.myTextView.text =@"";
return YES;
}