У меня есть 2 вопроса на uiscrollview.
Первый вопрос:
У меня есть просмотры изображений на uiscrollview (внизу экрана), и пользователи могут перетаскивать изображение из вида uiscroll.
Я помещаю пальцы поверх imageView, чтобы вытащить его, но uiscrollview берет прикосновения и прокручивает.
Полагаю, мне нужно, чтобы imageView сначала получил событие касания (если событие касания произошло в imageView)
Если направление пальца почти горизонтальное, задайте событие касания для просмотра с прокруткой, чтобы он мог прокручиваться,в противном случае (направление пальца не горизонтальное) позволяет пользователю перетаскивать изображение.
(у меня scrollView.directionalLockEnabled = YES) Интересно, как это можно сделать?
Второй вопрос:
Пользователь может отправить imageView обратно в uiScrollView, дважды нажавimageView.
Когда я это делаю, представление прокрутки не прокручивается до тех пор, пока я не перетаскиваю какие-либо imageViews в scrollView.
Не знаю, что является причиной этой проблемы ..
Ниже приведен мой код для отправкиimageView обратно в uiscrollview.
aDragView.userInteractionEnabled = NO;
CGPoint contentOffset = self.puzzlePieceScrollView.contentOffset;
float x = contentOffset.x;
int addIndex = x / widthWithPadding;
aDragView.scrollContainerIndex = addIndex;
CGRect newFrame;
int puzzlePieceCount = 0;
[UIView beginAnimations:@"addDragView" context: [aDragView retain]];
for(UIView* subview in [self.puzzlePieceScrollView subviews])
{
if([subview isKindOfClass: [DragView class]])
{
DragView* dragView = (DragView*)subview;
if(dragView.scrollContainerIndex >= addIndex)
{
dragView.scrollContainerIndex += 1;
newFrame = dragView.frame;
newFrame.origin.x += widthWithPadding;
dragView.frame = newFrame;
}
++puzzlePieceCount;
}
}
newFrame = aDragView.frame;
newFrame.origin.x = [self getOriginXForScrollIndex: addIndex];
newFrame.origin.y = self.frame.origin.y + upperPadding;
aDragView.frame = newFrame;
[UIView setAnimationDuration:0.3];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)];
[UIView commitAnimations];
float newWidth = std::max((puzzlePieceCount+1) * widthWithPadding, [[UIScreen mainScreen] bounds].size.width );
CGSize newContentSize = self.puzzlePieceScrollView.contentSize;
newContentSize.width = newWidth;
self.puzzlePieceScrollView.contentSize = newContentSize;
- (void) animationFinished:(NSString*)animationId finished:(BOOL)finished context:(void*)context
{
if ([animationId isEqualToString:@"addDragView"])
{
DragView* aDragView = (DragView*)context;
// add to puzzlePieceScrollView
CGPoint p;
p = CGPointMake(aDragView.bounds.size.width * 0.5, aDragView.bounds.size.height * 0.5);
CGPoint newCenter = [aDragView convertPoint: p toView: self.puzzlePieceScrollView];
aDragView.center = newCenter;
[self.puzzlePieceScrollView addSubview: aDragView];
aDragView.userInteractionEnabled = YES;
[aDragView release];
}
self.puzzlePieceScrollView.userInteractionEnabled = YES;
}