У меня есть табличный вид, в котором есть большое количество ячеек, используемых для создания формы. Я создал собственный TableViewCell. Эта ячейка содержит метку и текстовое поле, так, например, каждая строка будет выглядеть примерно такiPhone TableView с TextFields - next, предыдущая проблема с кнопкой
У меня также есть ячейки пользовательских таблиц, содержащую метку и текстовое представление, выглядит так же, как изображение выше, только ячейка больше, чтобы позволить место для текстового просмотра.
Теперь в каждом из этих текстовых полей и текстовых представлений добавлена панель инструментов, поэтому, когда текстовое поле становится первым ответчиком, панель инструментов отображается с помощью кнопок, сделанных, предыдущих и следующих кнопок.
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithTextField:)];
UIBarButtonItem *nextButton = [[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStyleDone target:self action:@selector(nextTableTextField:)];
UIBarButtonItem *previousButton = [[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleDone target:self action:@selector(previousTableTextField:)];
UIToolbar *numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
previousButton,
nextButton,
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
doneButton,
nil];
[numberToolbar sizeToFit];
field.inputAccessoryView = numberToolbar;
вопрос я имею, что у меня есть 10 строк таблицы, как это, экран может показывать только около 5 полных строк и немного 6-я строки. Я должен добавить, что я также добавил код для делегатов текстового поля, чтобы, когда текстовое поле становится первым ответчиком, экранные прокрутки позволяют полностью отобразить текстовое поле. Смотрите мой старый пост here для кода.
Итак, при загрузке экрана я нажимаю первую ячейку и щелкаю дальше, отлично работает, перемещается на второе текстовое поле в следующей ячейке. Затем я снова нажимаю следующую кнопку, и она идет в 3-я ячейка, затем 4-го, затем 5-го. Теперь наступает проблема. Когда я нахожусь в 5-й ячейке, и я нажимаю дальше, шестое текстовое поле становится первым ответчиком, но по какой-то причине экран не прокручивается. Теперь большая проблема в том, что когда я нажимаю еще раз, она не перемещается в 7-ое текстовое поле, так как 7-я ячейка еще не записана в памяти, так как она не видна на экране. Поэтому, если я нажму дальше, он ничего не сделает, текстовое поле 6 останется первым ответчиком. Поэтому сначала нужно сначала прокрутить список, так что ячейка 7 будет видна до того, как следующая кнопка будет работать, и сделайте следующее текстовое поле первым ответчиком.
Это одна и та же проблема при нажатии предыдущей кнопки, если нажать предыдущую кнопку, а предыдущая ячейка не находится на экране, то она ничего не сделает, пока эта ячейка не будет видна на экране.
Это вызвало у меня головную боль, которая, как представляется, не может найти способ обойти это. У кого-нибудь были подобные проблемы? Есть ли хорошая работа над этой проблемой?
Заранее спасибо
Edit:
Я должен также добавить это делает Сохранение данным проблемы, потому что у меня есть кнопка, при нажатии на петлю через каждую ячейку таблицы и сохраняют данные в каждом поле, его будет только прокручивать ячейки таблицы, которые видны на экране, и игнорировать остальные.
Пробовали ли вы этот код с 10 ячейками, все равно он переходит к следующему текстовому полю даже если ячейка еще не загружена в память? – AdamM
yep, причина, он будет загружен по строке вызова [self_.tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow: (indexPath.row + 1) inSection: 0]] внутри didEndOnExitHandler – iiFreeman
Не могли бы вы показать мне, как вы добавили функцию блочного кода в свою таблицу поэтому я могу видеть, как вы его реализовали, например, можете ли вы показать мне код, который вы использовали для создания didEndOnExitAction. – AdamM