Isa*_*aac 4 iphone keyboard uialertview ios
我正在编写一些iPad应用程序,并开始出现奇怪的效果.
我使用导航栏,因此我可以在我的视图中自由导航.无论如何,在其中一个内部视图中,我提供了检查用户是否真的想通过警报视图返回主视图的可能性(Just a Yes/no按钮).一旦用户确认他想要返回,然后我"手动"弹出视图,然后我导航到键盘隐藏的主视图.
但是,虚拟键盘的行为很奇怪.在"内部视图"内部,键盘在90%的时间内都可见(这是正常的,周围有很多UITextField).每当我想要隐藏它时,我该怎么做才能隐藏它?我把这样的东西放在"main viewWillAppear"中:
[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)
显然它隐藏了键盘,当我这样做时:
[[self navigationController] popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
iPad导航回来,然后键盘消失.没什么大不了的(第一次).
但后来我决定重新进入相同的视图,所以键盘出现,我做了一些奇特的东西.然后我决定中止(使用我的按钮),我再次显示相同的警报视图,我确认我想回到主视图(就像之前一样).代码是相同的,但在主视图中,:
[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)
对于整个会话,我已经失去了通过我的应用程序内的代码ANYWHERE关闭键盘的能力.
为什么我知道UIAlertView有事可做?因为如果我更改了我的"中止按钮"中的代码:
alertViewQuestionType=ALERT_ABANDON_TEST;
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"" message:NSLocalizedStringFromTable (@"STR_ABANDON_TEST_WARNING", @"ui_strings", @"") delegate:self cancelButtonTitle:NSLocalizedStringFromTable (@"STR_CANCEL", @"ui_strings", @"") otherButtonTitles:nil] autorelease];
[alert addButtonWithTitle:NSLocalizedStringFromTable (@"STR_ABANDON", @"ui_strings", @"")];
[alert show];
Run Code Online (Sandbox Code Playgroud)
对此:
[[self navigationController] popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
(也就是说,没有确认用户,用户只需按下中止按钮就可以导航回来),然后当主视图到达"viewWillAppear"功能时,隐藏键盘代码就可以了.不仅是时间,而是所有时间,直到我的应用程序会话结束.
我不知道我的问题是否100%明确,但如果有人认为他可以为这个错误提供一些启示,我会非常乐意在这里添加一些额外的代码......
问候!
我终于解决了我的问题.我更确定我可以做得更好,但就目前而言,即使我仍然不知道"导致上述行为的原因",我感到非常高兴.
问题是,如果我"弹出"一个视图,在UIAlertView委托代码中的FROM ,iOS认为这是我不应该做的事情,它的内部键盘管理代码"变得失控".这就好像我"太快"弹回,或者没有让iOS关闭它需要关闭的任何键盘数据结构.
所以一位同事(aleixventa)给了我一个提示:"你为什么不延迟一些'popback'代码,把它包裹在一个" NSTimer结构"里?这就是我所做的.我的'回弹'手册代码,现在是这样的:
NSTimer* testTimer = [NSTimer scheduledTimerWithTimeInterval:.05 target:self selector:@selector(popViewPorTimer) userInfo:nil repeats: NO];
Run Code Online (Sandbox Code Playgroud)
为我的popViewPorTimer选择器设置一个小函数:
-(void) popViewPorTimer
{
[[self navigationController] popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
而现在,无论通过"导航弹回"键盘被解除多少次,它总是被隐藏起来.好极了!!
如果有人知道为什么会发生这种情况,那么这将是一个非常受欢迎的信息.
当我自己"解决我的问题"时,我喜欢:)
| 归档时间: |
|
| 查看次数: |
1941 次 |
| 最近记录: |