我有一个相当棘手的滚动场景我需要排序。我有一个父UIScrollView与一个包含两个子UIView子类的容器视图。称他们为viewA和viewB。 UIScrollView已被限制为水平滚动/缩放。 ViewA和ViewB布置为水平条带,一个在另一个之上。 viewA和viewB的边界超出了scrollView的边界,并且在滚动/缩放期间显示为正常情况。到目前为止一切都很好。
这里的事情有点棘手:我需要能够垂直和水平拖动viewB。我不想在它自己的scrollView中嵌套viewB。
我的问题是,对于viewB实现简单垂直滚动的正确方法是什么,同时仍然使其相对于scrollView正常运行?我是否只是简单地实现了四种触摸序列方法:在viewB中开始/移动/结束/取消,操纵viewB的变换矩阵,我是清楚的还是更多的?
提前致谢。
干杯, 道格
答案 0 :(得分:0)
嗯,关于你给定的场景,我会按如下方式解决这个问题:
首先创建一个UIView-Subclass,包括nessecary函数,这个函数正在接收你的拖动动作。虽然这是可拖动的,但您应该禁用UIScrollView的滚动。 部首:
#import <UIKit/UIKit.h>;
@interface ViewB : UIView
{
}
@end
实现:
#import "ViewB.h"
@implementation DragView
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
self.alpha = 0.5;
((UIScrollView*)self.superview.superview).scrollEnabled = NO;
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint loc = [touch locationInView:self.superview];
self.center = loc;
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
self.alpha = 1.0;
((UIScrollView*)self.superview.superview).scrollEnabled = YES;
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
self.alpha = 1.0;
((UIScrollView*)self.superview.superview).scrollEnabled = YES;
}
// Further methods...
@end