Прежде всего, UITableView перечисляет все подпредставления и отправляет им сообщения о выделении.
Таким образом, даже если вы добавите UILabel в ваше представление, независимо от его глубины, оно пересекает все представления (используя свойство subviews).
Одно решение можетbe (то есть IOS4 +), переопределяющее свойство subviews и функция мошенничества с чит-таблицей, у нас нет никаких подпредставлений.Для этого нам нужно определить вызывающего, и, если это метод подсветки таблицы, мы вообще не должны возвращать подпредставления.
Мы можем создать простой UIView подкласс и переопределить подпредставления , как показано ниже.
- (NSArray *)subviews{
NSString* backtrace = [NSString stringWithFormat: @"%@",[NSThread callStackSymbols]];
if ([backtrace rangeOfString:@"_updateHighlightColorsForView"].location!=NSNotFound)
return [super subviews];
return [[NSArray new] autorelease];
}
- callStackSymbols доступен после IOS4 +
- _updateHighlightColorsForView - метод UITableView, отвечающий за выделение всех дочерних элементов