我有一个带有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:澄清:
所有视图控制器都是以编程方式创建的,没有nib文件或故事板。
我可以在用户进入VC2之前重组导航或尝试隐藏键盘,但我对这个特定问题感兴趣,而不是涉及更改应用程序逻辑的变通方法。
在viewWillAppear
中解雇键盘工作正常,但用户体验不佳。
答案 0 :(得分:0)
我不知道你是如何导航的,但是尝试在prepareForSegue
或unwindForSegue
或在VC1中对你有意义的其他地方捕捉过渡。然后以你之前提到的一种方式解雇键盘。
UIViewController Doc prepareForSegue
UIViewController Doc unwindForSegue
甚至在viewWillDisappear
或VC1的其他一些视图事件方法