У меня есть три контроллера вида, которые являются частью UIScrollView. Я хочу иметь возможность прокручивать между тремя, хотя один из контроллеров представления имеет UIPanGestureRecognizer. Я использую этот распознаватель жестов, чтобы пользователь мог перетащить палец вверх и вниз, чтобы увеличить и уменьшить высоту прямоугольного UIView. Поэтому этот UIPanGestureRecognizer действительно нужно знать о панорамировании вверх/вниз, а в режиме прокрутки можно использовать горизонтальное панорамирование.Жест жестка помешает прокрутке
Примером этого является, как домашний экран; вы можете прокручивать влево или вправо, а также прокручивать вниз, чтобы получить прожектор. Мне нужен такой механизм.
Это мой код для сковороды:
- (void)pan:(UIPanGestureRecognizer *)aPan; // When pan guesture is recognised
{
CGPoint location = [aPan locationInView:self.view]; // Location of finger on screen
CGRect secondRect = CGRectMake(210.0, 45.0, 70.0, 325.0); // Rectangles of maximimum bar area
CGRect minuteRect = CGRectMake(125.0, 45.0, 70.0, 325.0);
CGRect hourRect = CGRectMake(41.0, 45.0, 70.0, 325.0);
if (CGRectContainsPoint(secondRect, location)) { // If finger is inside the 'second' rectangle
CGPoint currentPoint = [aPan locationInView:self.view];
currentPoint.y -= 80; // Make sure animation doesn't go outside the bars' rectangle
if (currentPoint.y < 0) {
currentPoint.y = 0;
}
else if (currentPoint.y > 239) {
currentPoint.y = 239;
}
currentPoint.y = 239.0 - currentPoint.y;
CGFloat pointy = currentPoint.y - fmod(currentPoint.y, 4.0);
[UIView animateWithDuration:0.01f // Animate the bars to rise as the finger moves up and down
animations:^{
CGRect oldFrame = secondBar.frame;
secondBar.frame = CGRectMake(oldFrame.origin.x, (oldFrame.origin.y - (pointy - secondBar.frame.size.height)), oldFrame.size.width, (pointy));
}];
CGFloat result = secondBar.frame.size.height - fmod(secondBar.frame.size.height, 4.0);
secondInt = (result/4.0); // Update labels with new time
self->secondLabel.text = [NSString stringWithFormat:@"%02d", secondInt];
}
Код в основном повторяется для трех отдельных прямоугольных UIViews.
Если кто-нибудь может сказать мне, как получить панорамирование/прокрутку в главном экране в моем приложении, это было бы здорово!
Не могли бы вы поделиться ссылкой на свой проект (github/dropbox), чтобы я мог взглянуть на него? Трудно сказать, что такое эти бары и этикетки. – LuisCien
Вот ссылка на весь проект в DropBox: https://www.dropbox.com/sh/9jqry6y2kr5kltr/VklDgKvoYe Надеюсь, это поможет! Кроме того, у меня возникли проблемы с получением всех трех контроллеров представления в представлении прокрутки, и я не уверен, правильно ли код в ScrollViewController.m, поэтому, если бы вы могли помочь мне в этом, это было бы здорово! – user2397282
Мне не удалось открыть проект. Кажется, что проблема с файлом 'Bars.xcodeproj'. XCode не смог открыть его, и когда я открыл его с помощью TextEdit, он был пуст. – LuisCien