Контроллер UIScrollView - изменение свойства scrollview из вложенного пера? - PullRequest
1 голос
/ 12 сентября 2011

В настоящее время я работаю над приложением, которое использует scrollViewController, так как мне нужно иметь вертикальную и горизонтальную прокрутку, чтобы она загружала вложенный NIB.

Это все работало нормально, но когда я добавляю UIPicker в один из моих вложенных перьев, он не прокручивается, я прочитал, что это легко исправить, отключив прокрутку в UIScrollView, однако я не уверен на 100%, как это сделать из другой класс.

scrollViewController.h

@interface scrollViewController : UIViewController <UIScrollViewDelegate>{

    UIScrollView* scrollView;
    UIPageControl* pageControl;

    UIScrollView *vScrollView;
    UIScrollView *hScrollView;

    BOOL pageControlBeingUsed;
}

@property (nonatomic, retain) IBOutlet UIScrollView* scrollView;
@property (nonatomic, retain) IBOutlet UIPageControl* pageControl;

@property (nonatomic, retain) UIScrollView *vScrollView;
@property (nonatomic, retain) UIScrollView *hScrollView;

- (IBAction)changePage;

@end

scrollViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect bounds = self.view.bounds;

    // main guy is a horizontal scroller
    hScrollView = [[UIScrollView alloc] initWithFrame:bounds];
    hScrollView.contentSize = CGSizeMake(bounds.size.width * 2, bounds.size.height);
    hScrollView.delegate = self;
    [self.view addSubview:hScrollView];

    // the horizontal scroller contains a vertical scroller
    vScrollView = [[UIScrollView alloc] initWithFrame:bounds];
    vScrollView.contentSize = CGSizeMake(bounds.size.width, bounds.size.height * 2);
    vScrollView.delegate = self;
    [hScrollView addSubview:vScrollView];


    2ndView *view2 = [[2ndView alloc] initWithNibName:@"2ndView" bundle:nil];
    [vScrollView addSubview:view2.view];
    vScrollView.contentOffset = CGPointMake(0, bounds.size.height);

    mainView *vc = [[mainView alloc] initWithNibName:@"mainView" bundle:nil];
    vc.view.frame = CGRectOffset(bounds, 0, bounds.size.height); 
    [vScrollView addSubview:vc.view];


    // 3rd View
    ValidatorView *vc3 = [[ValidatorView alloc] initWithNibName:@"ValidatorView" bundle:nil];
    vc3.view.frame = CGRectOffset(bounds, bounds.size.width, 0); 

    [hScrollView addSubview:vc3.view]; 

    // enable paging in both directions
    hScrollView.pagingEnabled = TRUE;
    vScrollView.pagingEnabled = TRUE;

    hScrollView.showsHorizontalScrollIndicator = FALSE;
    vScrollView.showsVerticalScrollIndicator = FALSE;
    hScrollView.alwaysBounceHorizontal = FALSE;
    vScrollView.alwaysBounceVertical = FALSE;
    vScrollView.canCancelContentTouches =   NO;
    vScrollView.delaysContentTouches = NO;    
    hScrollView.bounces = FALSE;
    vScrollView.bounces = FALSE;
}

В mainView.m я создал кнопку, которая выводит UIPicker в представление, однако я хочу обновить vScrollView в scrollViewController со свойством

vScrollView.scrollEnabled = NO;

Буду признателен за любую помощь в этом.

Спасибо, Аарон

1 Ответ

0 голосов
/ 13 сентября 2011

В вашем классе делегатов приложения может быть переменная экземпляра, которая указывает на ваш scrollViewController, а затем вы можете использовать scrollEnabled этой переменной экземпляра для NO

...