Насколько я знаю, это невозможно сделать.
В итоге я реализовал полный пользовательский вид для моего accessoryView. Это также облегчает его изменение при взаимодействии с пользователем и выбор области, которую я часто нахожу. Я думаю, вы могли бы сделать только с помощью кнопки, если вам не нужны разные виды.
Я сделал customView, поместил прозрачную кнопку внутри него. Это представление я добавляю в ячейку:
CustomDisclosureArea *disArea = [[CustomDisclosureArea alloc] init];
[disArea setFrame:CGRectMake(280.0f, 0.0f, 40.0f, 71.0f)];
[disArea setTag:DISCLOSURE_ID];
[disArea.emptyButton addTarget:self action:@selector(cellButtonHandler:event:) forControlEvents:UIControlEventTouchUpInside]; //this the button inside the view.
[cell.contentView addSubview:disArea];
[disArea switchToState:AreaStateBlank]; //I can set it to different states (blank, checkmark, empty etc.
[disArea release];
Теперь метод, который вызывается при подключении accessoryView, немного особенный, потому что нам нужно знать, какая ячейка была подключена.
- (void) cellButtonHandler:(id)sender event:(id)event {
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
}
Но в итоге вы получите NSIndexPath, который совпадает с тем, который вы получили бы в методе didSelectRow или accessoryButtonTapped.
Надеюсь, это поможет, если вы решите сделать собственный accessViewView:)