Я использую пользовательское UIGestureRecognizer
разделите на подклассы для отслеживания жестов на моем InfoView
класс. InfoView
класс является подпредставлением пользовательского UITableViewCell
подкласс называют InfoCell
.
Я добавил свое устройство распознавания жеста к моему корневому представлению (родительское представление всего остального на экране, потому что цель моего пользовательского устройства распознавания жеста состоит в том, чтобы позволить перетаскивать InfoCell
представления между таблицами). Теперь, все работает, как это должно кроме одной вещи. Я использую следующий код в моем UIGestureRecognizer
подкласс для обнаружения касаний к InfoView
посмотреть:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIView *touchView = [[touches anyObject] view];
if ([touchView isKindOfClass:[InfoView class]]) {
// Do stuff
}
Проблема здесь состоит в том что касания к InfoView
объект прерывается, поэтому они не передаются UITableView
который содержит InfoCell
, который является родительским представлением InfoView
. Это означает, что я больше не могу прокручивать табличное представление путем медленного движения InfoView
представление, которое является проблемой потому что InfoView
покрывает все InfoCell
.
Есть ли какой-либо способ, которым я могу передать касания на табличное представление так, чтобы это могло прокрутить? Я уже попробовал набор вещей:
[super touchesBegan:touches withEvent:event];
[touchView.superview.superview touchesBegan:touches withEvent:event];
(touchView.superview.superview
получает ссылку на ее родителя UITableView
)
Но ничто не работало до сих пор. Кроме того, cancelsTouchesInView
propery моего UIGestureRecognizer
установлен на NO
, таким образом, это не вмешивается в касания.
Справка ценится.Спасибо!
У меня была строка в моем методе touchesBegan
, которая устанавливала для свойства state
распознавателя жестов значение UIGestureRecognizerStateBegan
. Удаление этой строки, кажется, решает проблему.
UIGestureRecognizer имеет свойство cancelsTouchesInView, для которого по умолчанию установлено значение ДА. Это означает, что касания в UIView отменяются при распознавании жеста. Попробуйте установить для него значение NO, чтобы UIScrollView мог получать дальнейшие события касания.