Наши дизайнеры придумали приятный дизайн, который включает индекс с правой стороны UITableView, который будет выше, чем сам UITableView. Он также имеет некоторые пользовательские изображения для поиска и лучшего шрифта/цвета, чем реализация по умолчанию. Однако, поскольку UITableView не поддерживает настройку своего индекса (что я знаю), я пытался это сделать вручную. Пользовательский интерфейс выглядит следующим образом:Создание пользовательского индекса UITableView iOS
Это должно быть простая задача, но у меня чертовски времени, что делает его работу. Я установил UIView справа от таблицы с UIButtons, выстроенным сверху вниз, чтобы представить мой индекс. Цель, заключающаяся в том, что пользователь втягивает/удаляет UIButtons, я бы переместил UITableView в нужную секцию.
Я искал вокруг, и кажется, что для этого нужно было бы прослушать события UIControlEventTouchDragOutside и UIControlEventTouchDragEnter, чтобы знать, когда я вхожу в/из одной из UIButtons.
Для этого я создал весь список кнопок как IBOutletCollection, который я INIT в ViewDidLoad как так:
@property (retain, nonatomic) IBOutletCollection(UIButton) NSArray* indexButtons;
@implementation ViewBeerListViewController
...
@synthesize indexButtons = _indexButtons;
- (void)viewDidLoad
{
[super viewDidLoad];
...
// Go through the index buttons and set the change function
for (int i = 0; i < [self.indexButtons count]; ++i)
{
UIButton* button = [self.indexButtons objectAtIndex:i];
[button addTarget:self action:@selector(touchDragOutside:) forControlEvents:UIControlEventTouchDragOutside];
[button addTarget:self action:@selector(touchDragEnter:) forControlEvents:UIControlEventTouchDragEnter];
}
}
The functions touchDragOutside and touchDragEnter look like this:
- (IBAction)touchDragOutside:(UIButton*)sender
{
NSLog(@"Button %@ touch dragged outside", [sender titleLabel].text);
}
- (IBAction)touchDragEnter:(UIButton*)sender
{
NSLog(@"Button %@ touch dragged enter", [sender titleLabel].text);
}
Это все строит и работает. Тем не менее, похоже, что я только когда-либо получаю события для кнопки, на которой я начал прикосновение. НАПРИМЕР. если я прикоснусь к букве «G» и начну перетаскивать вверх и вниз, я увижу только журналы для касания, перетаскивающие «G» и «G». Я не получаю никаких событий для каких-либо других UIButtons, когда я им перехожу.
Любая помощь в разрешении этой проблемы будет очень оценена. Я застрял на том, что кажется очень тривиальной проблемой в течение очень долгого времени.
Спасибо!
Интересно. Я попробую сегодня вечером. Спасибо за предложение! – Jason
Прохладный, это будет работать просто отлично :) Спасибо, хороший сэр! – Jason
Нет проблем. Удачи. –