Как вызвать действие, когда текстовое поле становится активным - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть CollectionViewController, составленный из пользовательских ячеек.На данный момент мои пользовательские ячейки состоят только из UITextFields.Когда я нажимаю внутри одного из полей textFields, чтобы начать печатать, я хочу запустить анимацию в ячейке.Почему-то я не могу понять, почему моя анимация не запускается, когда я щелкаю внутри textField.Когда я соответствую протоколу UItextFieldDelegate и пытаюсь вызвать действие с помощью метода DidBeginEditing, оно не работает.Когда я пытаюсь запустить анимацию через UIControlEvents.touchDown, она тоже не работает.

@objc func animateCell(textField: UITextField) {  
    print("TextField active")
   let cell = collectionView.cellForItem(at: indexPath)
   UIView.animate(withDuration: 0.5, delay: 0, options: .allowAnimatedContent, animations: ({
   cell?.frame = collectionView.bounds
    collectionView.isScrollEnabled = false
  }), completion: nil)
}

1 Ответ

0 голосов
/ 15 декабря 2018

Вместо textFieldDidBeginEditing, попробуйте использовать textFieldShouldBeginEditing: (и обязательно верните true из этого метода, поскольку вы хотите, чтобы пользователь мог печатать: -).

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

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