Как редактировать текстовое поле, нажав кнопку в ячейке swift

#ios #swift #uicollectionview #first-responder

#iOS #swift #uicollectionview uicollectionview #первый ответчик #uicollectionview

Вопрос:

У меня есть текстовое поле в контроллере collectionview, и я хочу иметь возможность вызывать его нажатием кнопки, которая находится в ячейке. Есть ли способ сделать это текстовое поле firstResponder() из ячейки?

Комментарии:

1. сколько разделов в вашем представлении коллекции?

2. Я думаю, что только 1

3. есть пара других вопросов, просто чтобы убедиться, что я иду в правильном направлении. текстовое поле также находится в ячейке или это просто свойство вашего контроллера представления вне CollectionView?

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

5. Да, текстовое поле находится в главном контроллере представления, как я уже сказал. На самом деле это даже не в представлении коллекции, а просто перекрывает все это.

Ответ №1:

Хорошо, у меня получилось, но я не уверен, насколько это эффективно, поэтому, если кто-нибудь знает лучший способ сделать это, пожалуйста, отправьте ответы, и я выберу лучший через день или 2. Это то, что я использовал:

 button.addTarget(self.supernode, action: #selector(CollectionViewController.buttonTapped), forControlEvents: .TouchUpInside)
  

Причина, по которой он говорит «supernode», заключается в том, что я использую asyncdisplaykit, но superview должен делать то же самое, если только вам не нужно переходить дважды, а не один раз, не уверен. В любом случае я использовал это для запуска функции buttonTapped() в главном контроллере представления.

 func buttonTapped(sender: ASButtonNode) {
        self.txtField.becomeFirstResponder()
    }
  

Снова замените node на view, если используете uikit, storyboard или w / e. Дайте мне знать, пожалуйста, если это не «правильный» способ, потому что для меня важна производительность.

Комментарии:

1. Вы все правильно поняли. Обычно отправителем будет UIButton

2. для чего нужен этот ASButtonNode ? зачем ты это туда поместил

3. Как я уже сказал, я использую AsyncDisplayKit, и он использует узлы вместо представлений, поэтому просто замените слово «узел» на «просмотр» при использовании UIKit / Storyboard. Я думаю, что дважды упоминал об этом в ответе, лол..