Swift - не может передать пользовательский жест из пользовательского UICollectionViewCell в UITextField внутри него

У меня есть обычай UICollectionViewCell (давайте назовем это MyCustomCell) это имеет обычай UITextField (давайте назовем это MyCustomField) внутри него пользователи могут добавлять текст. Тем не менее, кажется, что независимо от того, что я делаю, входы крана не получают от MyCustomCell к своей подвид MyCustomField, Раньше у меня была такая же договоренность, кроме MyCustomCell это UITableViewCell и это сработало по какой-то причине.

Прямо сейчас я должен был сделать обходной путь, когда всякий раз, когда ячейка нажата, ячейка отправляет becomeFirstResponder() сообщение в текстовое поле. Тем не менее, это не позволяет пользователю нажать на кнопку "Очистить текст" внутри MyCustomField и не позволяет пользователю перемещать курсор в текстовом поле:

// function inside the MyCustomCell, called by the view controller
// whenever it thinks the user tapped on a cell:
func cellTapped()
{
    // this is an instance of MyCustomField:
    input.becomeFirstResponder();
}

Есть ли способ "передать" фактический жест MyCustomField (либо из MyCustomCell или из контроллера вида, который управляет ими обоими)?

Обновление: это то, как выглядит иерархия представления для MyCustomCell (подкласс UICollectionViewCell):

просмотреть иерархию MyCustomCell, в которой есть MyCustomField

1 ответ

Это может быть полезно для других, у которых есть подобная проблема: я считаю, что @MultiColourPixel является правильным в комментарии выше, что между MyCustomField и MyCustomCell существует скрытое "представление". То, что я сделал, было:

  1. Резервное копирование файлов.xib и.swift для кода MyCustomCell а также MyCustomField,
  2. Удалите файлы.xib и.swift.
  3. Из меню XCode заново создайте файл.swift и убедитесь, что вы также проверили "создать XIB" при создании файла / класса.swift, который является подклассом UICollectionViewCell,
  4. Скопируйте и вставьте старое содержимое xib / swift в новый xib / swift.
  5. Это должно работать, без необходимости явно отправлять becomeFirstResponder() к MyCustomField,
Другие вопросы по тегам