2012-06-02 75 views
1

我正在使用iOS 5并制作iPad应用程序。我在我的应用程序中有一个UITableView,每个单元格都包含一个UITextView。它经历非常慢的滚动,但是,当非英文文本加载到文本视图。使用非英语(阿拉伯语,中文,希伯来语,乌尔都语等)时UITableView滚动缓慢文本

这是我创建的示例项目来演示该问题。它使用一个UITableView,每一个的UITableViewCell有它的1标签一个的UITextView它滚动速度非常慢:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 20; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"BasicCellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    UITextView *textView = (UITextView *)[cell viewWithTag:1]; 
    textView.text = @"أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎. أَبْجَدِيَّة عَرَبِيَّة‎."; 
    return cell; 
} 

我已经使用的NSLog来验证此行仅此一项造成的放缓。删除它使一切工作完美,但我需要设置文本。我已经阅读了关于性能调整的所有内容,但这对我来说仍然是一个巨大的问题。

与英语,法语,德语(可能与字符集或unicode相关的语言)相比,慢速滚动只是阿拉伯语,中文,希伯来语等语言的问题一个包含5000个字符的英文字符串根本没有减速但是有200个阿拉伯字符串。

我感谢任何帮助!

+0

阿拉伯语的长字符串是静态还是动态的(就像从服务器拉出来的一样)? –

+0

这些字符串是动态的,但在UITableView开始绘制之前完全加载。在渲染/绘制单元时,它们根本不会改变。 – Anton

+0

是否需要用500个字符串填充单元格?你不能只显示它的一部分? –

回答

0

似乎有什么在这里拖延执行被设置在一个可编辑的UITextView

按照讨论的长文,使得UITextView的非编辑增加了性能 我建议,使其不可编辑,也许以后将其更改为可编辑

+0

不幸的是,这不适用于我的阿拉伯语。它可以用任何数量的文本以英文完美地工作,但不能用阿拉伯语。 – Anton

+0

你是对的,我只是用UITextView测试它,它确实很慢:S –

+0

这里的问题是你使用的是UITextView,当它从UI线程中调用它时会变慢,所以我不认为你可以更快地做到这一点,你将不得不实现一个详细的视图来编辑文本 –

相关问题