Mic*_*ael 94 iphone cocoa-touch objective-c
由于以下代码行,我第一次(也是第一次)加载了我的视图时出现了这个神秘的错误:
- (void)viewWillAppear:(BOOL)animated
{
    [textField becomeFirstResponder];
}
有一个明显的(约3 - 4秒,甚至在模拟器上)延迟,因为这使我的应用程序感到反应迟钝.有谁知道如何解决这一问题?我在Apple的网站上找不到任何文档,或者在Google或Google上找到任何解决方案.
奇怪的是,如果我把线放入-viewDidAppear:而不是-viewWillAppear:; 也就是说,不是打印错误仅在第一次键盘显示永不再,该错误不打印第一次,但之后每次.这给我带来了很大的麻烦.
Rob*_*ier 104
覆盖-viewDidAppear:,而不是-viewWillAppear,并确保打电话[super viewDidAppear:].当您不在屏幕上时("将出现"),您不应该执行动画.和-viewDidAppear:文档说明,你必须调用super,因为他们有自己的事情要做.
Cor*_*oyd 22
我很快就遇到了类似的错误:
我注意到我只是在模拟器中而不是在设备上.另外,我陷入了无限循环.
我的解决方案是推迟新模态视图的呈现.似乎快速更新视图层次结构导致Apple的代码中出现了一些竞争条件.
考虑到这一点,试试这个:
     - (void)viewDidAppear:(BOOL)animated{
            [super viewDidAppear:animated];
            [textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1];
  }
您可能在为尚未在屏幕上显示UITextField的键盘时遇到问题.这可能会导致类似我的问题.
此外,为了以防万一,您在呈现键盘之前暂停给予层次结构更新时间.
希望这可以帮助.
dia*_*lic 12
检查您是否只与主线程上的UI进行交互.我wait_fences: failed to receive reply: 10004003坐在那里等待UIAlertView显示大约5秒,因为相关代码是在后台线程上执行的.您可以通过将代码放入块并将其发送到主线程来确保:
dispatch_async(dispatch_get_main_queue(), ^{
    if (!success) {
        // Inform user that import failed
        UIAlertView * importFailedAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorTitle5", @"Import failed") 
                                                                     message:NSLocalizedString(@"Error5", @"Something went wrong") 
                                                                    delegate:nil 
                                                           cancelButtonTitle:NSLocalizedString(@"OK", nil) 
                                                           otherButtonTitles:nil];
        [importFailedAlert show];
    }
});
小智 9
在尝试了我可以在Google上找到的所有内容并且没有一个能够正常工作之后,这就解决了我的问题.关键是我在willDismissWithButtonIndex委托方法中做这个东西.在我在其他地方做之前.
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [myTextField resignFirstResponder];
    [myTextField removeFromSuperview];  
    [myTextField release];  
}
小智 8
如果viewDidLoad中包含以下行,则可能导致此消息.评论以下行.
[[UIApplication sharedApplication] setStatusBarHidden:YES]; //This line should be commented
(您可以从应用程序plist文件中禁用状态栏).
经过一些测试后,最重要的规则是:"不要在动画解雇或动画节目之前进行动画制作."
例如:
-dismissModalViewControllerAnimated:YES在委托回调之后不要调用(在使用回调执行此操作之前等待淡出警报视图)UIAlertView -alertView:willDismissWithButtonIndex:-alertView:didDismissWithButtonIndex:becomeFirstResponder在视图控制器在屏幕上之前尝试显示键盘().坏事可能会发生.
希望它会有用;-)
你做完了 [textfield becomeFirstResponder];
在从代码中的textfield获取值之后,执行[textfield resignFirstResponder];.我认为这对你有所帮助.
这对我有用,让键盘立即显示,没有动画或延迟.
我们textField是一个实例变量MyViewController(的子类UIViewController).
通话[textField becomeFirstResponder]中initWithNibName:bundle:(用于一个子类UIViewController)或initWithStyle:(对于的子类UITableViewController),而不是在viewDidLoad.例如:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [textField becomeFirstResponder];
    }
    return self;
}
或者,在初始化之后但在推送之前调用它UIViewController.例如:
MyViewController *viewController = [[MyViewController alloc] init];
[viewController.textField becomeFirstResponder];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
| 归档时间: | 
 | 
| 查看次数: | 60225 次 | 
| 最近记录: |