2013-05-07 105 views
0

我已经检查了其他类似的问题,但没有一个解决了我的问题。 我有一个基于窗口的应用程序,我在同一个.xib文件中使用了更多的窗口。在第一个窗口中,我有一些文本字段,我可以隐藏键盘上的“完成”按钮。在第二个窗口中,我有一个文本视图,并且在这里点击“完成”键盘被解除。 问题是:如果我离开第一个视图而没有关闭键盘,并且我转到第二个视图,键盘没有响应。我无法关闭它,并且按钮不再工作。我的错误在哪里?我可以重新解决这个问题吗?更改视图时隐藏键盘

我希望你能帮助我。非常感谢。

+0

你的意思是实际不同的'UIWindow's还是你通俗地指的是不同的'UIViewController's? – jszumski 2013-05-07 20:58:35

+0

我在同一个.xib中使用了不同的'UIWindow',引用了相同的UIViewController。 – CrazySoftware 2013-05-07 21:06:09

+0

你需要在同一个窗口中使用多个UIViews。不是多个UIWindows – 2013-05-07 21:09:45

回答

1

使用申报的设计方法来关闭当前:

创建通知,包括它在你的取消切换到另一个视图的方法或方法:

NSNotification *dismissKeyboard = [NSNotification notificationWithName:@"dismissKeyboard" object:nil]; 
[[NSNotificationCenter defaultCenter] postNotification:dismissKeyboard]; 

在你的第二个视图中添加通知监听在viewDidLoad中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToExecute) name:@"dismissKeyboard" object:nil]; 

add方法执行时发送通知:

-(void)methodToExecute { 
    [self.textfield resignFirstResponder]; 
} 
0

您需要在更改视图之前简单地resignFirstResponder。不要使用第二个UIWindow,只使用一个UIWindow替换视图。通常你使用2个viewControllers并在它们之间切换,但如果你真的想要的话,你也可以在UIWindow上使用2个不同的UIViews。