iOS - UITextView成为FirstResponder

时间:2011-11-25 11:48:03

标签: ios uitextview becomefirstresponder

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

6 个答案:

答案 0 :(得分:5)

我后来通过这一行调用了becomeFirstResponder:

[self.searchBar performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1f];

它对我有用。希望这有帮助。

我猜这是动画的原因。

答案 1 :(得分:1)

根据official Apple documentation的说明:

  

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

您应该在eid = event.id; $.ajax({ type: 'POST', url: 'lookup_event.php', data: eid, success: function (sessions) { var sessions = JSON.parse(sessions); $('#eventTitle').val(sessions["title"]; $('#eventDescription').val(sessions["description"]; } }); 而不是[textView becomeFirstResponder]中致电viewDidAppear:

似乎您在viewWillAppear:找到的解决方案正在使用说明中的相同规则。

答案 2 :(得分:0)

您的问题并不是特别清楚,但是您假设当模态视图控制器(我假设您已调用 MessageComposeViewController )被取消时调用viewWillAppear。在所有情况下情况可能并非如此(例如,如果您的观点位于UINavigationController内)

有许多方法可以解决这个问题,但也许最简单的方法是将 MessageComposeViewController 传递给原始视图控制器并调用方法来制作UITextField第一响应者。

答案 3 :(得分:0)

我或多或少有同样的问题,它与segue的动画有关,看起来像是在不使用resignFirstResponder打破与视图的关系而做一个segue o解除视图,我只是修改了segue来做它以编程方式这样:

  - (IBAction)back:(id)sender {

     [textView resignFirstResponder];
     [self performSegueWithIdentifier:@"returnScreen" sender:self];
  }

然后在viewWillAppear中我做了下一个:

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

  ....

  }

答案 4 :(得分:0)

在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()
    }

答案 5 :(得分:-1)

我找到了解决方案!!!!!!!! 因此,在messageComposeViewController:didFinishWithResult委托方法中,我们称之为[self dismissModalViewControllerAnimated:YES],但这是错误的!这个方法应该收到NO,而不是YES!然后回想一下[textView becomeFirstResponder]方法!我不知道为什么,但以这种方式应用程序完美! 谢谢大家! :)