#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. Я думаю, что дважды упоминал об этом в ответе, лол..