Отображать клавиатуру без анимации

Посмотрел на UIKeyboardAnimationDurationUserInfoKey но я просто не могу найти нигде, как настроить его на пользовательское значение.

UIKeyboardAnimationDurationUserInfoKey – это UIKeyboardAnimationDurationUserInfoKey строковый идентификатор словарного ключа, который содержит продолжительность анимации, поэтому нет возможности легко его изменить.

Один из способов заставить клавиатуру отобразиться без анимации – это наблюдать за уведомлениями о клавиатуре и отключать анимацию, когда она появится, а затем снова их использовать. Это, конечно же, отключает любую другую анимацию.

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowKeyboard:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didShowKeyboard:) name:UIKeyboardDidShowNotification object:nil]; - (void)willShowKeyboard:(NSNotification *)notification { [UIView setAnimationsEnabled:NO]; } - (void)didShowKeyboard:(NSNotification *)notification { [UIView setAnimationsEnabled:YES]; } 

и затем то же самое для уведомлений UIKeyboardWillHideNotification/UIKeyboardDidHideNotification .

iOS8-совместимый:

Добавьте соответствующий метод делегата:

 - (void)textFieldDidBeginEditing:(UITextField *)textField { [UIView setAnimationsEnabled:NO]; } 

или

 - (void)textViewDidBeginEditing:(UITextView *)textView { [UIView setAnimationsEnabled:NO]; } 

Добавьте уведомление о клавиатуре:

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

И метод:

 - (void)didShowKeyboard:(NSNotification *)notification { [UIView setAnimationsEnabled:YES]; } 

Пытаться

 [UIView performWithoutAnimation:^{ [textField becomeFirstResponder]; }]; 

Я нашел, что лучшим решением является UIView.setAnimationsEnabled(_ enabled: Bool) .

Swift 3

 UIView.setAnimationsEnabled(false) textField.becomeFirstResponder() // or textField.resignFirstResponder() if you want to dismiss the keyboard UIView.setAnimationsEnabled(true) 

Ответ @Vadoff отлично работает. Здесь для Swift 3:

  override func viewDidLoad() { super.viewDidLoad() //... // Add observer to notificationCenter so that the method didShowKeyboard(_:) is called when the keyboard did show. NotificationCenter.default.addObserver(self, selector: #selector(type(of: self).didShowKeyboard(_:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil) // Make textField the first responder. textField.becomeFirstResponder() // <- Change textField to the name of your textField. } func textFieldDidBeginEditing(_ textField: UITextField) { // Disable animations. UIView.setAnimationsEnabled(false) } func didShowKeyboard(_ notification: Notification) { // Enable animations. UIView.setAnimationsEnabled(true) } 

Мне пришлось отключить анимацию в textViewShouldBeginEditing , textFieldDidBeginEditing не работал для меня (iOS 8)

Это довольно простые парни. Не используйте UIView: SetAnimationEnabled, поскольку это будет потенциально неприятным. Вот как я удаляю анимацию при показе клавиатуры.

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [txtFirstName becomeFirstResponder]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [txtFirstName resignFirstResponder]; } 
  • Как я могу программно проверить, присутствует ли клавиатура в приложении iOS?
  • Как получить ввод с клавиатуры в pygame?
  • Обнаружение текущего языка ввода iPhone
  • Получить UITableView для перехода к выбранному UITextField и избегать скрытия клавиатуры
  • Получение ввода клавиатуры
  • OSX: Обнаруживать общесистемные события KeyDown?
  • Обложки iPhone для iPhone UITextField
  • Как проверить «Разрешить полный доступ» в iOS 8?
  • Обнаружить, если в C # нажата какая-либо клавиша (не A, B, а любая)
  • Как обрабатывать события с клавиатуры и мыши в полноэкранном эксклюзивном режиме в java?
  • Как обрабатывать одновременные нажатия клавиш в Java?
  • Interesting Posts
    Давайте будем гением компьютера.