2013-05-05 3 views
-1

У меня есть ViewController с UITextField (вид сверху) и UITextView (вид снизу). Я хочу переместить UITextView в начало просмотра, когда пользователь начнет его редактировать. Когда пользователь начинает редактирование с UITextView, все в порядке, но когда пользователь сначала хочет отредактировать UITextField, а затем UITextView (без скрывающей клавиатуры) его не работает. UITextField скрыт, но UITextView не меняет свою рамку. Я пытался использовать UIKeyboardDidShowNotification, но его вызывали, только когда клавиатура всплывала.Изменение рамки UITextView

Код для воспроизведения проблемы: ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UITextViewDelegate> 
@property (weak, nonatomic) IBOutlet UITextField *titleTF; 
@property (weak, nonatomic) IBOutlet UITextView *bodyTV; 
@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 
@end 

@implementation ViewController 
-(void)textViewDidBeginEditing:(UITextView *)textView { 
    self.titleTF.hidden=YES; 
    CGRect newFrame=CGRectMake(20, 20, textView.frame.size.width, 100); 
    textView.frame=newFrame; 
} 
@end 

Запуск приложения и нажмите на UITextView, приложение будет выглядеть следующим образом: http://imageshack.us/photo/my-images/694/32568213.png Пока все нормально (UITextField скрыт, а UITextView перемещен и изменен).

Запустить приложение снова. Сначала нажмите UITextField, а затем нажмите UITextView. Приложение выглядит так: http://imageshack.us/photo/my-images/843/66433184.png UITextField скрыт, но UITextView не изменил свой фрейм.

+0

этот метод огонь, когда вы начинаете ли редактирование? вы пробовали NSLog? –

+0

Да, его работа. Он всегда скрывает titleTF. –

+0

У вас есть только один textView в этом контроллере? –

ответ

1

Перемещение вверх, когда начинается редактирование TextView, Переместите его, когда редактирование закончится.

Просто поместите эти два метода,

-(void) textViewDidBeginEditing:(UITextView *)textView{ 
    CGRect frame = self.view.frame; 
    frame.origin.y = -(textView.frame.origin.y + textView.frame.size.height); 
    [UIView animateWithDuration:0.3f animations:^{ 
     self.view.frame = frame; 
    }]; 
} 

-(void) textViewDidEndEditing:(UITextView *)textView{ 
    CGRect frame = self.view.frame; 
    frame.origin.y = 0; 
    [UIView animateWithDuration:0.3f animations:^{ 
     self.view.frame = frame; 
    }]; 
} 
+0

рабочий правый? –

+0

Не так, как я хочу. Он перемещает корень родителя, но мой UITextView не является полностью видимым, потому что он больше высоты экрана - высота клавиатуры. Я хочу изменить размер UITextView для заполнения высоты экрана (слева от клавиатуры). –

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