Следующее работает, но я не уверен, что это лучший способ сделать это. Хотя я так думаю.
Поскольку все thumbViews
имеют ширину kThumbSize
, просто отметьте touchesEnded
, что x-координата locationInView
экземпляра UITouch
(при условии self.multipleTouchEnabled = NO
) меньше или равна kThumbSize
. Это означает, что прикосновения закончились внутри thumbView
. Нет необходимости проверять координату y, потому что если касания перемещаются по вертикали, tableView
, который содержит thumbViews
, прокрутки и касания отменяются.
Выполните следующие действия в ThumbView : UIView
(чьи экземпляры являются подпредставлениями UITableView
):
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded %@", touches);
CGPoint touchPoint = [[touches anyObject] /* only one */ locationInView:self];
if (touchPoint.x >= 0.0f && touchPoint.x <= kThumbSize) {
[(ThumbsTableViewCell *)self.superview.superview thumbTouched:self];
}
}
Чтобы регистрировать касания только по одному thumbView
за один раз, вы также, вероятно, захотите установить self.exclusiveTouch = YES;
в методе init
экземпляра ThumbView
.