Я пытаюсь сделать это в течение пары дней, и после прочтения множества сообщений людей, пытающихся сделать это, я все еще не могу полностью работать UITextField
в некоторых из моих UITableViewCells
, как в этом примере:
Либо у меня есть рабочая форма, но текст не виден (хотя я установил его синий цвет), клавиатура при нажатии нажимает на поле, и я не смог правильно реализовать события клавиатуры. Я попытался с кучей примеров от Apple (в основном UICatalog
, там, где есть своего рода подобный элемент управления), но он все еще не работает правильно.
Может ли кто-нибудь помочь мне (и всем людям, пытающимся реализовать этот элемент управления) и опубликовать простую реализацию a UITextField
in a UITableViewCell
, которая отлично работает?
CGRectMake(A_MAGIC_NUMBER, ANOTHER_MAGIC_NUMBER, YET_ANOTHER_HARDCODED_MAGIC_NUMBER, OH_HERES_ANOTHER_MYSTERIOUS_HARDCODED_MAGIC_NUMBER)
? Откуда эти цифры?Ответы:
Попробуйте это. Работает как шарм для меня (на устройствах iPhone). Я использовал этот код для входа в систему один раз. Я настроил табличное представление, чтобы иметь два раздела. Можно конечно избавиться от условного раздела.
Результат выглядит так:
источник
[_field addTarget:self action:@selector(editingEnded:) forControlEvents:UIControlEventEditingDidEnd];
.[cell addSubview:playerTextField];
чтобы заставить его работать с iOS 5.0+.Вот решение, которое хорошо выглядит под iOS6 / 7/8/9 .
Обновление 2016-06-10: это все еще работает с iOS 9.3.3
Спасибо за вашу поддержку, теперь это на CocoaPods / Carthage / SPM по адресу https://github.com/fulldecent/FDTextFieldTableViewCell
В основном мы берем запас
UITableViewCellStyleValue1
и скрепляем там,UITextField
гдеdetailTextLabel
должен быть. Это дает нам автоматическое размещение для всех сценариев: iOS6 / 7/8/9, iPhone / iPad, Картинка / Нет изображения, Аксессуар / Нет аксессуара, Портрет / Пейзаж, 1x / 2x / 3x.Примечание: это использует раскадровку с
UITableViewCellStyleValue1
ячейкой типа с именем «word».источник
UITableViewCellStyleRightDetail
вы имеете в видуUITableViewCellStyleValue1
?Вот как я этого добился:
TextFormCell.h
TextFormCell.m
Это может показаться немного многословным, но это работает!
Не забудьте установить делегата!
источник
Попробуй это. Он также может обрабатывать прокрутку, и вы можете повторно использовать ячейки без необходимости удалять ранее добавленные подпредставления.
источник
Это не должно быть сложно. При создании ячейки для вашей таблицы добавьте объект UITextField в представление содержимого ячейки.
Установите для делегата UITextField значение self (т.е. ваш viewcontroller). Присвойте тег текстовому полю, чтобы вы могли определить, какое текстовое поле было отредактировано в ваших методах делегата. Клавиатура должна появиться, когда пользователь нажимает на текстовое поле. Я получил это работает, как это. Надеюсь, поможет.
источник
CGRectZero
в виде фрейма, убедитесь, что вы установили фрейм текстового поля, прежде чем добавить его в иерархию представления. Получениеframe
свойства представления содержимого ячейки особенно полезно для такой задачи.подробности
Полный образец кода
результат
источник
Я избегал этого, вызывая метод, запускаемый
[cell.contentView bringSubviewToFront:textField]
каждый раз, когда появлялись мои ячейки, но затем я обнаружил эту относительно простую технику:Кажется, что не возникает та же проблема с переполнением фона, и он выравнивается самостоятельно (в некоторой степени). Кроме того, textLabel автоматически усекается, чтобы избежать переполнения (или под), что удобно.
источник
Я столкнулся с той же проблемой. Похоже, что установка
cell.textlabel.text
свойства приводит UILabel к передней части contentView ячейки. Добавьте textView после настройкиtextLabel.text
или (если это невозможно) вызовите это:источник
Я действительно боролся с этой задачей на iPad, с текстовыми полями, которые отображаются невидимыми в UITableView, и весь ряд становится синим, когда он получает фокус.
В конце концов для меня сработала методика, описанная в разделе «Техника для статического содержимого строки» в Руководстве по программированию в табличном представлении Apple . Я помещаю и метку, и textField в UITableViewCell в NIB для представления и вытаскиваю эту ячейку через выход
cellForRowAtIndexPath:
. Полученный код гораздо аккуратнее, чем UICatalog.источник
Вот как это делается, я считаю, правильный путь. Он работает на Ipad и Iphone, как я это проверял. Мы должны создать наши собственные customCells, классифицируя uitableviewcell:
начните с interfaceBuilder ... создайте новый UIViewcontroller, назовите его customCell (добровольно отправьте xib, пока вы там) Убедитесь, что customCell является подклассом uitableviewcell
Сотрите все виды сейчас и создайте один вид размером с отдельную ячейку. сделать это представление подклассом customcell. Теперь создайте два других представления (дублируйте первое).
Перейдите к своему инспектору соединений и найдите 2 IBOutlets, которые вы можете подключить к этим представлениям сейчас.
-backgroundView -SelectedBackground
соедините их с двумя последними представлениями, которые вы только что продублировали, и не беспокойтесь о них. самое первое представление, которое расширяет customCell, поместите ваш ярлык и поле uitext в него. Зайдите в customCell.h и подключите вашу метку и текстовое поле. Установите высоту этого представления, чтобы сказать 75 (высота каждой ячейки) все сделано.
В вашем файле customCell.m убедитесь, что конструктор выглядит примерно так:
Теперь создайте UITableViewcontroller и в этом методе используйте класс customCell следующим образом:
}
источник
Вот раскрывающийся подкласс, для
UITableViewCell
которого detailTextLabel заменяется на редактируемыйUITextField
(или, в случаеUITableViewCellStyleDefault
, заменяет textLabel ). Это дает то преимущество, что позволяет вам повторно использовать все знакомые UITableViewCellStyles, accessoryViews и т. Д., Теперь детали можно редактировать!Прост в использовании - просто создайте свою ячейку, как и раньше, но теперь используйте cell.textField вместо cell.detailTextLabel (или cell.textLabel в случае
UITableViewCellStyleDefault
). напримерВдохновленный и улучшенный ответ FD
источник
Для событий next / return для нескольких полей UIText внутри UITableViewCell в этом методе я взял UITextField в раскадровке.
Чтобы захватить текст из textfield-
источник