Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextView是否无意中添加新行?_Ios_Objective C_Ios7 - Fatal编程技术网

Ios UITextView是否无意中添加新行?

Ios UITextView是否无意中添加新行?,ios,objective-c,ios7,Ios,Objective C,Ios7,我有一个包含UITextField和UITextView的滚动视图。UITextField返回键为“Next”,按下此键时,我调用[myTextView becomeFirstResponder];一个随机的新行被插入到我的文本视图中,所以我从第二行开始。我如何避免这种情况 还需要注意的是,当我直接点击UITextView而不是点击下一个键时,不会发生这种情况 提前谢谢 好的,这种行为是由于使用“下一步”按钮成为同一运行循环中的第一响应者时,iOS中出现了一个错误。为了克服这个问题,你应该手动完

我有一个包含UITextField和UITextView的滚动视图。UITextField返回键为“Next”,按下此键时,我调用[myTextView becomeFirstResponder];一个随机的新行被插入到我的文本视图中,所以我从第二行开始。我如何避免这种情况

还需要注意的是,当我直接点击UITextView而不是点击下一个键时,不会发生这种情况


提前谢谢

好的,这种行为是由于使用“下一步”按钮成为同一运行循环中的第一响应者时,iOS中出现了一个错误。为了克服这个问题,你应该手动完成。 首先让第一响应者退出textFied,然后让textView成为第一响应者。这样地。实现此委托方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    [textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
    return YES;
}

解决此问题的一个解决方案是,当您实现
textFieldShouldReturn:
delegate方法时,确保返回
NO
,而不是
YES
。通过返回
NO
,换行符不会传递到文本字段

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    // move to next field or whatever you need
    [myTextView becomeFirstResponder];

    return NO;
}

与执行选择器类似,但使用异步调度队列(Swift 4版本):


如果您共享一些代码,它将使事情变得更好。您确定没有将某些内容设置为textView.text属性…?这都是在interface builder中创建的,因此我没有任何内容可共享。我当前的实现文件中没有代码您说您没有代码,但您的问题表明您调用了
[myTextView becomeFirstResponder]。这是一个矛盾。很明显你有代码。Lol抱歉我的错误,我忘记了textFieldShouldReturn方法。但至少我知道这是一个iOS错误。谢谢大家的帮助,没必要这么做。看到我的答案了。这两种方法都有效。今天大家投票表决怎么样:)为什么要先让
文本字段中的第一响应者辞职?为什么不在
文本视图
上直接呼叫延迟的
成为第一响应者
?这两种方法都有效,今天大家一起投票吧:)太棒了!这个真的很管用!谢谢textFieldShouldReturn是实际上通过了换行符。没有,它没有。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
   textField.resignFirstResponder()
   DispatchQueue.main.async {
      self.myTextView.becomeFirstResponder()
   }
   return true
}