2012-08-30 6 views
0

У меня есть UITextView с большим количеством текста в нем. Когда отображается subview, содержащее UITextView, UITextView появляется только после того, как UITextView был затронут и прокручен.iOS 5 SDK UITextView ограничение/ошибка?

Есть ли предел того, сколько текста может быть в UITextView? Или это ошибка?

прилагается - клип, объяснив это появление.

https://dl.dropbox.com/u/8256776/UITextView%20Bug.MOV

+0

Если в 'UITextView' есть текстовое ограничение, вы еще не ударили его, так как у меня есть текстовое представление, содержащее гораздо более длинные тексты. Можете ли вы сказать что-то о том, как текст установлен в текстовом представлении. И как добавляется текстовое представление и т. Д. – pajevic

+0

Сначала я прошел мимо этого документа из текстового документа в Interface Builder и дал эти результаты. Затем я попробовал вставить текст и установить его как NSString и установить UITextView.text для этой NSString в viewDidLoad, но он дал те же результаты. – OscarTheGrouch

+0

Очень сложно попытаться выяснить, что пойдет не так, без каких-либо фрагментов кода или какого-либо понимания того, как добавляются представления и т. Д. – pajevic

ответ

2

Хорошо, я посмотрел на него, и это, кажется, довольно распространенной проблемой. Кажется, что текстовое представление не считает, что он должен нарисовать текст, но вызов setNeedsDisplay не помогает. Я не знаю, если есть «реальное» решение, но вы можете заставить его сделать текст с помощью прокрутки программно:

disclaimerView.contentOffset = CGPointMake(0, 1); 
disclaimerView.contentOffset = CGPointMake(0, 0); 

неродственной вещь в вашем коде: В вашем методе switchView у вас есть две анимации, один для меню и один для просмотра, который вы сдвигаетесь на место. Это не нужно, как вы можете поместить оба setFrame вызовов в одной и ту же анимации:

MenuView = (UIView *)[self.view viewWithTag:100]; 
appView = (UIView *)[self.view viewWithTag:ViewInt]; 
[MenuView setFrame:CGRectMake(0, 0, 320, 480)]; 
[appView setFrame:CGRectMake(321, 0, 320, 480)]; 
[UIView beginAnimations:@"move buttons" context:nil]; 
[UIView setAnimationDuration:.5]; 
[MenuView setFrame:CGRectMake(-320, 0, 320, 480)]; 
[appView setFrame:CGRectMake(0, 0, 320, 480)]; 
disclaimerView.contentOffset = CGPointMake(0, 1); 
disclaimerView.contentOffset = CGPointMake(0, 0); 
[UIView commitAnimations]; 

И еще одну вещи (и тогда я отступлю :)) Вы, кажется, очень любим использовать тег для извлечения элементов. Хотя это действительно работает, это не очень понятно. У вас нет таких элементов, поэтому я бы просто добавил каждый из них как IBOutlet со значимым именем (например, с вашим disclaimerView). Кроме того, есть отдельные методы для разных видов, которые вы перемещаете на место. Таким образом, вы можете легко выполнить дополнительный материал, который вам может понадобиться только для этого вида, например, прокрутка силы на disclaimerView.

+0

благодарит за всех полезных намеки. Я не знал, что вы можете установить несколько анимаций в одном блоке. Причина, по которой я использую теги, - я не мог подумать об изящном способе вызова subview с одной кнопки, не назвав все подпункты. Вся огромная информация, спасибо большое. – OscarTheGrouch

+0

Забавно, что вы должны сказать «блок», потому что это на самом деле напоминает мне, что с iOS 4.0 рекомендуемый способ создания анимации фактически использует блоки, например, используя метод 'animateWithDuration: animations:'. Использование 'beginAnimations' /' commitAnimations' не рекомендуется, хотя я не считаю, что они устарели. – pajevic