У моего приложения iOS есть форма с примерно дюжиной полей, и я хотел добавить кнопки «Предыдущий»/«Далее» над клавиатурой, чтобы помочь пользователям перемещаться между полями. У меня есть что-то вроде этого:Кнопки UISegmentedControl перестают работать
for (UITextField *t in _textfields) {
t.delegate = self;
UIToolbar *toolbar = [[UIToolbar alloc] init];
[toolbar setBarStyle:UIBarStyleBlackTranslucent];
UISegmentedControl *segControl = [[UISegmentedControl alloc] initWithItems:@[@"Previous", @"Next"]];
[segControl addTarget:self action:@selector(switchTextField:) forControlEvents:UIControlEventValueChanged];
segControl.segmentedControlStyle = UISegmentedControlStyleBar;
segControl.tag = [_textfields indexOfObject:t];
if (segControl.tag == 0) [segControl setEnabled:NO forSegmentAtIndex:0];
else if (segControl.tag == [_textfields count] - 1) [segControl setEnabled:NO forSegmentAtIndex:1];
[segControl sizeToFit];
UIBarButtonItem *segItem = [[UIBarButtonItem alloc] initWithCustomView:segControl];
UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self.view action:@selector(endEditing:)];
[toolbar setItems:@[segItem, flexButton, doneButton]];
[toolbar sizeToFit];
[t setInputAccessoryView:toolbar];
}
Проблема, с которой я сталкиваюсь, заключается в том, что каждый так часто один из сегментов перестает работать. Метод switchTextField
просто не вызывается, кнопка выглядит нормально, не отключена, но прикосновения не регистрируются. Иногда это «предыдущая» кнопка, иногда это «следующая», никогда не в одно и то же время, и иногда они оба работают нормально. Как только одна из кнопок застревает, единственный способ (временно) исправить это - нажать другое текстовое поле без использования панели инструментов или отпустить клавиатуру и начать редактирование снова. В чем может быть проблема?
Спасибо за подсказку, чтобы сбросить выбранный сегмент, это именно то, что было. Причина перехода с сегментированным управлением вместо кнопок просто косметическая: я предпочитаю, когда эти кнопки «предыдущий/следующий» соединены как сегменты в одном элементе управления, а не отдельные кнопки с пространством между ними. – SaltyNuts
, хотя это немного больше работы, вы можете настроить 'UIButton' с вашими фоновыми изображениями, чтобы они выглядели как подключенные кнопки. Обычно я стараюсь избегать реализаций, которые используют элементы управления в том виде, в каком они не предназначены (например, с помощью элемента управления выбором в виде кнопки), но если он выглядит/работает так, как вам нравится, тогда это здорово. – XJones