В основном я пытаюсь сделать прокрутку UIScrollView только на больших углах. Как и сейчас, если вы переместите палец на 10 градусов от горизонтали, прокрутка будет прокручиваться. Я хотел бы поднять это, скажем, до 30 градусов.
После некоторого чтения я установил, что лучший способ сделать это - поместить UIView с подклассами поверх вида прокрутки. Если касания UIView сверху превышают 30 градусов, передайте его в представление прокрутки, а в противном случае - нет.
Однако я не могу понять, как передать прикосновения вниз. Вот мой код прямо сейчас:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"glass touch began");
UITouch *touch = [touches anyObject];
beginning_touch_point = [touch locationInView:nil];
[scroll_view touchesBegan:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"glass touch ended");
UITouch *touch = [touches anyObject];
CGPoint previous_point = beginning_touch_point;
CGPoint current_point = [touch locationInView:nil];
float x_change = fabs(previous_point.x - current_point.x);
float y_change = fabs(previous_point.y - current_point.y);
if(x_change > y_change)
{
if(previous_point.x - current_point.x < 0)
{
[(MyScheduleViewController *)schedule_controller didFlickLeft];
}
else
{
[(MyScheduleViewController *)schedule_controller didFlickRight];
}
[scroll_view touchesCancelled:touches withEvent:event];
}
else
{
[scroll_view touchesEnded:touches withEvent:event];
}
}
Сейчас я знаю, что это проверка на 45 градусов, но это не главное. Что важно, так это то, что касания действительно правильно передаются моему scroll_view. У меня есть NSLog () на touchesbegan и touchesended, и он делает оба правильно. Это просто не прокрутка. Я беспокоюсь, прикосновения начались, и прикосновения закруглились, не может вызвать прокрутку. Кто-нибудь знает, что может, или что я делаю не так?