推送这个UIViewController时为什么会有这么长的延迟?

时间:2011-06-14 20:36:46

标签: ios uiviewcontroller

我正在将一个简单的UIViewController推送到导航控制器上,并且在推动动画开始之前有大约1秒的延迟。这是一个新的构建。加载一次后,它不再有延迟。

根视图控制器有3个其他表格单元,它们将不同的视图控制器压入堆栈,并且它们都没有相同类型的延迟。另外,这个VC是最简单的(就代码量而言)4。

我使用该技术推送所有VC:

    if (!editExerciseViewController) {
        editExerciseViewController = [[EditExerciseViewController alloc] initWithStyle:UITableViewStyleGrouped];
    }

以下是有问题的ViewController的代码:

#import "EditExerciseViewController.h"

@implementation EditExerciseViewController
@synthesize exerciseField;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        [[self navigationItem] setTitle:@"Exercise"];   
    }
    return self;
}

- (void)dealloc
{
    [super dealloc];
}

#pragma mark - View lifecycle

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;

    CGFloat viewWidth;
    viewWidth = 130.0f;
    CGRect frame = CGRectMake(0.0f, 0.0f, viewWidth, 21.0f);

    if ([indexPath row] == 0) {
        // If Exercise cell
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
        }

        cell.textLabel.text = NSLocalizedString(@"Exercise", nil);
        exerciseField = [[UITextField alloc] initWithFrame:frame];
        [exerciseField setKeyboardType:UIKeyboardTypeNumberPad];
        [exerciseField setTextAlignment:UITextAlignmentRight];
        [exerciseField setClearsOnBeginEditing:YES];
        [exerciseField setPlaceholder:NSLocalizedString(@"calories", nil)];
        [exerciseField setTextColor:[UIColor colorWithRed:0.20f green:0.31f blue:0.52f alpha:1.0f]];

        [cell setAccessoryView:exerciseField];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
        [exerciseField becomeFirstResponder];

    }

    return cell;
}

@end

此代码中是否存在导致此延迟的内容?

我正在iPhone 3GS上测试它。

1 个答案:

答案 0 :(得分:0)

问题在于键盘。键盘第一次加载到较旧的设备上时它很慢。您可以在应用中预加载键盘。这里有一些指示。

Link