如何在循环内的每次更改后强制iOS重绘视图

时间:2014-01-20 07:19:03

标签: javascript ios webview xcode5

我正在尝试尝试从Objective-C到JavaScript的调用速度。到目前为止,我有以下代码

- (IBAction)didTapUpdateWebView:(id)sender {
    int hits = 30;
    CFTimeInterval startTime = CFAbsoluteTimeGetCurrent();
    NSLog(@"time before: %f", startTime);
    for (int i = 0; i < hits; i++) {
        NSString *str=[self.fNameTextField.text stringByAppendingFormat:@"%d", i];
        NSString *jsCommand = [NSString stringWithFormat:@"setFirst('%@')", str];
        NSString *ret=[self.webView stringByEvaluatingJavaScriptFromString:jsCommand];
        NSLog(@"sent %@", ret);
        [self updateNativeNameValuesWithFirstName:str];

        // trying to refresh the view but none of these work
        [self.view.layer setNeedsDisplay];
        [self.view.layer setNeedsLayout];
        [self.view layoutSubviews];
        [self.view.layer displayIfNeeded];

        // sleep for a bit so change is visible
        [NSThread sleepForTimeInterval:0.1];
    }
    CFTimeInterval finishTime = CFAbsoluteTimeGetCurrent();
    float delta = finishTime - startTime;
    NSString *result =[NSString stringWithFormat: @"alert('%d hits took %f seconds')", hits, delta];
    [self.webView stringByEvaluatingJavaScriptFromString:result];
}

我希望在每次循环迭代后看到UI更新。但是,似乎循环在后台执行,并且在循环完成并且警报被丢弃之前没有可见的变化。如何确保在每次循环迭代后更新UI?

0 个答案:

没有答案