2011-01-15 2 views
0

У меня есть текстовый вид (файл nib-файла) с UITextView, который максимизирует весь вид.UITextView не изменяет размер по клавиатуре, показывающей

Когда я нажимаю viewcontroller на навигационный контроллер, я загружаю клавиатуру в виде viewDidLoad текстового вида.

Моя проблема заключается в том, что когда я пишу текст, который имеет больше строк, чем есть место, текст стоит за клавиатурой. Я последовал за sampe от Apple here.

Если я зарегистрирую «newTextViewFrame», это NULL. но если я отлаживаю вещь, она имеет прекрасное значение. Даже если я жестко задал его, размер UITextView изменит размер.

Вот мой код:

- (void)keyboardWillShow:(NSNotification *)notification { 

/* 
Reduce the size of the text view so that it's not obscured by the keyboard. 
Animate the resize so that it's in sync with the appearance of the keyboard. 
*/ 

NSDictionary *userInfo = [notification userInfo]; 

// Get the origin of the keyboard when it's displayed. 
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; 

// Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position. 
CGRect keyboardRect = [aValue CGRectValue]; 
keyboardRect = [self.view convertRect:keyboardRect fromView:nil]; 

CGFloat keyboardTop = keyboardRect.origin.y; 
CGRect newTextViewFrame = self.view.bounds; 
newTextViewFrame.size.height = keyboardTop; - (self.view.bounds.origin.y); 

// Get the duration of the animation. 
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; 
NSTimeInterval animationDuration; 
[animationDurationValue getValue:&animationDuration]; 

// Animate the resize of the text view's frame in sync with the keyboard's appearance. 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:animationDuration]; 

createListingTextView.frame = newTextViewFrame; 

[UIView commitAnimations]; 
NSLog(@"Textview resized: %@", newTextViewFrame); 

}

Моя задача я просто: Реализовать View с UITextView и клавиатурой открытой и прокручивать UITextView когда-либо текст превышает.

Пожалуйста, советы ...

ответ

1

Существует точка с запятой после keyboardTop на линии

newTextViewFrame.size.height = keyboardTop; - (self.view.bounds.origin.y); 

Это, конечно, предотвратить newTextViewFrame от получения заданной высоты.

+0

Woops. Виноват. Я помещаю полуточку в цель для тестирования. Проблема все еще сохраняется. Кажется, что UITextView i каким-то образом перерисовывается без моих настроек. Даже если я уменьшаю размер в IB, UITextView максимизируется при отображении View i. – esbenr

+0

Нечетный. Должны спросить очевидное: вы уверены, что вы меняете правильный файл nib? Вы пробовали очистить и перестроить? – Daniel

+0

Да. Я действительно попробовал скопировать пример из Apple и все еще не могу изменить его размер. Даже если я задал размер TextArea в малом дизайнере, область «максимизируется» при запуске приложения. Мне этот код выше должен работать, но мне не хватает чего-то, что максимизирует область во время выполнения. Когда я вернусь с работы, я отброшу весь код. – esbenr

Смежные вопросы