Как показать UIElement, скрытые с клавиатуры в iOS5? - PullRequest
0 голосов
/ 21 октября 2011

В iOS 5 iPad поддерживает 3 разные клавиатуры (обычная, разделенная, сдвигающаяся).Ранее, когда появляется клавиатура, контроллер будет уведомлен через KeyboardDidShowNotification.Здесь, если у нас есть какие-либо элементы пользовательского интерфейса, скрытые с помощью клавиатуры, установим смещение и подтолкнем элементы вверх (используя представление прокрутки).В iOS 5 мы должны обрабатывать в зависимости от типа клавиатуры.Как мы узнаем о типе клавиатуры.Что мы можем сделать для новых типов клавиатур?.

Спасибо, durai.

Ответы [ 2 ]

0 голосов
/ 23 октября 2013

Если вы хотите прокрутить автоматически скрытые элементы textView или textField под клавиатурой при нажатии на элемент редактирования текста, следующий код поможет вам для ios5:

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

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

// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
    _scrollView.contentInset = contentInsets;
    _scrollView.scrollIndicatorInsets = contentInsets;

    // If active text field is hidden by keyboard, scroll it so it's visible
    // Your app might not need or want this behavior.
    CGRect aRect = self.view.frame;
    aRect.size.height -= kbSize.height;
    if (!CGRectContainsPoint(aRect, _activeField.frame.origin) ) {
        [self.scrollView scrollRectToVisible:_activeField.frame animated:YES];
    }
}

// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    _scrollView.contentInset = contentInsets;
    _scrollView.scrollIndicatorInsets = contentInsets;
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    _activeField = textField;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    _activeField = nil;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.

    [self registerForKeyboardNotifications];
}
0 голосов
/ 21 октября 2011

Если вы реагируете на UIKeyboardWillShowNotification или UIKeyboardWillHideNotification, с вами все будет в порядке, поскольку они отправляются только тогда, когда клавиатура отображается в «обычном режиме». Если пользователь ее поднимает или разбивает, вы получите1003 * (странное поведение, но единственный выбор Apple - сделать его обратно совместимым с приложениями для iOS 4)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...