Клавиатура иногда блокирует UITextView - PullRequest
0 голосов
/ 04 марта 2012

В моем приложении у меня есть UITextView, который находится в нижней части экрана.Итак, я делаю следующий код, но проблема в том, что только когда текст, который я нажимаю на UITextView, находится ниже клавиатуры, он будет правильно прокручиваться выше клавиатуры.

Вот как я регистрируюNSNotifications: (в ViewDidLoad)

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasShown:)
                                             name:UIKeyboardDidShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasHidden:)
                                             name:UIKeyboardWillHideNotification object:nil];

Методы:

-(void)keyboardWasShown:(NSNotification*)aNotification {
    NSDictionary *info = [aNotification userInfo];

    // Get the size of the keyboard.
    NSValue *aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
    keyboardSize = [aValue CGRectValue].size;

    // Resize the scroll view (which is the root view of the window)
    CGRect viewFrame = [textView frame];

    viewFrame.size.height -= keyboardSize.height;

    textView.frame = viewFrame;

    // Scroll the active text field into view.
    //CGRect textFieldRect = [activeField frame];
    [textView scrollRectToVisible:viewFrame animated:YES];
}

-(void)keyboardWasHidden:(NSNotification*)aNotification {
    // Reset the height of the scroll view to its original value
    CGRect viewFrame = [textView frame];
    viewFrame.size.height += keyboardSize.height;
    textView.frame = viewFrame;
}

Как отменить регистрацию NSNotifications: В ViewDidUnload:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

Кто-нибудь видитчто-то не так?

Спасибо!

1 Ответ

0 голосов
/ 25 июня 2014

вот код, который я использую, чтобы переместить текстовое представление вверх, чтобы я мог видеть его, когда появляется КБмой взгляд уже в просмотре прокрутки.

-(void)textViewDidBeginEditing:(UITextView *)textView { //Keyboard becomes visible

    //perform actions.
    NSLog(@"IN VIEW");
    [self scrollTheViewToTop:self.scroller forTheTextView:textView];
}
- (void)textViewDidEndEditing:(UITextView *)textView {
    [self.scroller setContentOffset:CGPointZero animated:YES];
}
- (void)scrollTheViewToTop:(UIScrollView *)scrollView forTheTextView:(UITextView *)textView {

    //Scroll the ScrollView Up tp show the Continue button in the bottom is visible.

    CGPoint pt;
    CGRect rc = [textView bounds];
    rc = [textView convertRect:rc toView:scrollView];
    pt = rc.origin;
    pt.x = 0;
    pt.y -= 60;
    [scrollView setContentOffset:pt animated:YES];
}
...