Согласно Apple iOS Scroll View Programming Guide сейчас ..
Чтобы создать богатый пользовательский опыт, вы можете вид гнездо прокрутки в вашем приложении. До iOS 3.0 было сложно, если не невозможно, выполнить это. В iOS 3.0 эта функциональность полностью поддерживается и работает автоматически.
Так гнездования scrollviews прекрасно подходит> IOS 3. Чтобы ответить на ваш вопрос, я добавил Scrollview C как подвид к «контейнер» UIView - перед тем, добавив, что вид контейнера Scrollview B. Кажется, чтобы остановить сильный удар, потянув прокрутка родительского прокрутки вниз, хотя мне приходилось пробираться довольно сильно и быстро, чтобы показать, как вы описали поведение без представления контейнера.
@interface TiledScrollView : UIScrollView @end
@implementation TiledScrollView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self)
{
self.layer.borderColor = [UIColor whiteColor].CGColor;
self.layer.borderWidth = 10.f;
}
return self;
}
- (void)setContentSize:(CGSize)contentSize
{
[super setContentSize:contentSize];
BOOL horizontal = contentSize.width > self.frame.size.width;
if(horizontal)
{
CGFloat col = self.contentSize.width/10.f;
for (int i = 0; i < 10; i++)
{
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(i * col, 0, col, self.contentSize.height)];
view.backgroundColor = [UIColor colorWithHue:(arc4random() % 100)/100.f saturation:1.f brightness:1.f alpha:1.f];
[self addSubview:view];
}
}
else
{
CGFloat row = self.contentSize.height/10.f;
for (int i = 0; i < 10; i++)
{
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, i * row, self.contentSize.width, row)];
view.backgroundColor = [UIColor colorWithHue:(arc4random() % 100)/100.f saturation:1.f brightness:1.f alpha:1.f];
[self addSubview:view];
}
}
}
@end
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect bounds = [UIScreen mainScreen].bounds;
TiledScrollView * A = [[TiledScrollView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height)];
TiledScrollView * B = [[TiledScrollView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height/2.f)];
TiledScrollView * C = [[TiledScrollView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height/4.f)];
[A setContentSize:CGSizeMake(bounds.size.width * 4, bounds.size.height)];
[B setContentSize:CGSizeMake(bounds.size.width, bounds.size.height * 4)];
[C setContentSize:CGSizeMake(bounds.size.width, bounds.size.height * 4)];
UIView * container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height/4.f)];
[container addSubview:C];
[B addSubview:container];
[A addSubview:B];
[self.view addSubview:A];
}
@end
- ваш палец вне C (например, в B), когда он начинает подпрыгивать? – boreas
движение начинается с C, и да, палец находится вне C, когда он начинает отскакивать. Зачем ? – xeonarno