Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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_Uitextview_Becomefirstresponder - Fatal编程技术网

iOS-UITextView成为第一响应者

iOS-UITextView成为第一响应者,ios,uitextview,becomefirstresponder,Ios,Uitextview,Becomefirstresponder,这就是问题所在:当MessageComposeViewController被解除时,我的文本视图不会成为第一响应者,键盘也不会出现。为什么?我将[textView becomeFirstResponder]代码放在视图中将出现。我怎么办?您的问题不是特别清楚,但是您假设当模态视图控制器(我假设您称为MessageComposeView控件)被忽略时,将出现viewwillexpress。并非所有情况下都是如此(例如,如果您的视图位于UINavigationController内) 有多种方法可以

这就是问题所在:当MessageComposeViewController被解除时,我的文本视图不会成为第一响应者,键盘也不会出现。为什么?我将
[textView becomeFirstResponder]
代码放在
视图中将出现
。我怎么办?

您的问题不是特别清楚,但是您假设当模态视图控制器(我假设您称为MessageComposeView控件)被忽略时,将出现
viewwillexpress
。并非所有情况下都是如此(例如,如果您的视图位于
UINavigationController
内)


有多种方法可以处理此问题,但最简单的方法可能是将MessageComposeViewController的引用传递给原始视图控制器,并调用一种方法使您的
UITextField
成为第一响应者。

您的问题不是特别清楚,但是您已经假设当模式视图控制器(我假设您称之为MessageComposeViewController)被解除时,
视图将出现
被调用。并非所有情况下都是如此(例如,如果您的视图位于
UINavigationController
内)


有多种方法可以处理此问题,但最简单的方法可能是向MessageComposeViewController传递对原始视图控制器的引用,并调用一种方法,使您的
UITextField
成为第一响应者。

我找到了解决方案!!!!!!!! 因此,在
消息composeviewcontroller:didFinishWithResult
委托方法中,我们调用
[self dismissModalViewControllerAnimated:YES]
,但它是错误的!此方法应接收“否”,而不是“是”!然后调用
[textView becomeFirstResponder]
方法!我不知道为什么,但通过这种方式,该应用程序工作得非常完美!
不过,谢谢大家!:)

我找到了解决办法!!!!!!!! 因此,在
消息composeviewcontroller:didFinishWithResult
委托方法中,我们调用
[self dismissModalViewControllerAnimated:YES]
,但它是错误的!此方法应接收“否”,而不是“是”!然后调用
[textView becomeFirstResponder]
方法!我不知道为什么,但通过这种方式,该应用程序工作得非常完美!
不过,谢谢大家!:)

我后来打电话给becomeFirstResponder:

[self.searchBar performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1f];
这对我有用。希望这有帮助


我想这是动画的原因。

我后来打电话给becomeFirstResponder,通过这句话:

[self.searchBar performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1f];
这对我有用。希望这有帮助


我想这是动画的原因。

我或多或少也有同样的问题,它与segue的动画有关,它看起来像是在不使用resignFirstResponder的情况下执行segue o关闭视图打破与视图的关系,我只是修改segue以编程方式执行,如下所示:

  - (IBAction)back:(id)sender {

     [textView resignFirstResponder];
     [self performSegueWithIdentifier:@"returnScreen" sender:self];
  }
然后,在视图中将显示我执行的下一个操作:

 -(void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
     [textView becomeFirstResponder];

  ....

  }

我或多或少也有同样的问题,它与segue的动画有关,它看起来像是在不使用resignFirstResponder的情况下执行segue o关闭视图打破与视图的关系,我只是修改segue以编程方式执行它,如下所示:

  - (IBAction)back:(id)sender {

     [textView resignFirstResponder];
     [self performSegueWithIdentifier:@"returnScreen" sender:self];
  }
然后,在视图中将显示我执行的下一个操作:

 -(void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
     [textView becomeFirstResponder];

  ....

  }

根据政府的说明:

在将对象指定为第一响应者之前,请确保应用程序已建立其对象图。例如,您通常在viewdide:方法的重写中调用becomeFirstResponder方法。如果尝试在ViewWillDisplay:中指定第一个响应程序,则对象图尚未建立,因此becomeFirstResponder方法返回NO

您应该在
视图中调用
[textView becomeFirstResponder]
,而不是
视图将出现:


似乎您通过
[self dismissModalViewControllerAnimated:NO]
找到的解决方案正在使用注释中的相同规则。

根据以下注释:

在将对象指定为第一响应者之前,请确保应用程序已建立其对象图。例如,您通常在viewdide:方法的重写中调用becomeFirstResponder方法。如果您试图在ViewWillExpression中分配第一个响应程序,则对象图尚未建立,因此becomeFirstResponder方法返回NO

您应该在
视图中调用
[textView becomeFirstResponder]
,而不是
视图将出现:

似乎您通过
[self dismissModalViewControllerAnimated:NO]
找到的解决方案使用的是相同的注释规则。

在swift中

let when = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
    dispatch_after(when, dispatch_get_main_queue()) {
        self.searchBar.becomeFirstResponder()
    }
迅速地

let when = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
    dispatch_after(when, dispatch_get_main_queue()) {
        self.searchBar.becomeFirstResponder()
    }

两个标准问题:
视图是否会在消息composeviewcontroller被解除后出现
被调用?textView不是空的吗?@MichaelDautermann textView不是空的,我确定,但是我如何知道在消息控制器被解除后是否调用ViewWillDisplay?设置一个断点并查看它是否命中。或者添加
NSLog(@“foo”)
(但请参见下面的答案)@jon nslog打印正确的值一对标准问题:
视图是否会在消息composeviewcontroller被解除后出现
被调用?textView不是空的吗?@MichaelDautermann textView不是空的,我确定,但是我如何知道在消息控制器被解除后是否调用ViewWillDisplay?设置一个断点并查看它是否命中。或者添加
NSLog(@“foo”)
(但请参见下面的答案)@jon nslog打印正确的值当模式视图被取消时,我认为视图将出现。我不明白你说的传递对MessageComposeViewController的引用是什么意思。我如何做到这一点?看看这个问题,看看
视图将出现在哪里的例子,可能会调用,也可能不会调用:如果这些都不起作用,那么我可以提供一些代码示例,但最简单的方法是在MessageComposeViewController上创建一个实例变量和属性,初始化后它是giv