在UINavigationController堆栈中关闭UIViewController的键盘

时间:2016-02-15 13:30:19

标签: ios uiviewcontroller uinavigationcontroller keyboard

我有一个带有3个标签的标签栏应用程序(T1,T2,T3)。

在T1中,我有一个像VC1这样的导航堆栈 - > VC2 - > VC3。 VC1具有文本字段,显示用于用户输入的键盘。用户输入后,我不会在用户进入VC2然后再转到VC3之前解除键盘。

然后用户进入T3,在T3中做了一些应该自动将她/他直接切换到T1和VC1的东西。

当发生这种情况时,T1中的VC1显示键盘。如何在屏幕上关闭VC1中的键盘?

P.S。我很好地尝试了if(isset($_GET['i']) && isset($_GET['t']) && isset($_GET['a'])){ $id = $_GET['i']; $type = $_GET['t']; $action = $_GET['a']; if ($type == "polygon" && $action == "delete") { $sth = $dbh->prepare('DELETE FROM polygons WHERE id = :id'); $sth->bindParam(':id', $id); $sth->execute(); } } resignFirstResponder,但看起来只有在VC1在屏幕上之后它们才能正常工作(在[view endEditing:YES]中工作,不能在viewDidAppear中工作)。

EDIT1:澄清:

  1. 所有视图控制器都是以编程方式创建的,没有nib文件或故事板。

  2. 我可以在用户进入VC2之前重组导航或尝试隐藏键盘,但我对这个特定问题感兴趣,而不是涉及更改应用程序逻辑的变通方法。

  3. viewWillAppear中解雇键盘工作正常,但用户体验不佳。

1 个答案:

答案 0 :(得分:0)

我不知道你是如何导航的,但是尝试在prepareForSegueunwindForSegue或在VC1中对你有意义的其他地方捕捉过渡。然后以你之前提到的一种方式解雇键盘。

UIViewController Doc prepareForSegue

UIViewController Doc unwindForSegue

甚至在viewWillDisappear或VC1的其他一些视图事件方法