2014-01-12 4 views
0

У меня очень длинный вид (> 2000 пикселей), созданный в xib. Этот xib загружается, а затем внутри ViewController я переключаю корневой вид на прокрутку (я хочу, чтобы прокручивали 2000 пикселей);UIButton в scrollView не реагирует на внешний исходный кадр

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIView *view = self.view; 

    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:self.view.frame]; 

    scroll.contentSize = self.view.bounds.size; 

    self.view = scroll; 
    [scroll addSubview:view]; 
} 

Длинный вид имеет кнопку, но это не срабатывает, если она расположена за пределами верхней части длинного зрения (т.е. вне первоначального кадра экрана).

This post кажется похожим, но немного отличается, поскольку этот пользователь SO динамически расширяет размер прокрутки. В этом случае вид прокрутки фиксированного размера (полный экран), но я не могу ударить по объектам в моем xib, которые находятся за пределами исходного кадра. Во время отладки, я могу видеть кадр как представлений прокрутки и представление содержимого устанавливается (и долго) ...

<UIView: 0x946db50; frame = (0 0; 320 2320); autoresize = W+H; layer = <CALayer: 0x946db20>> 

<UIScrollView: 0x9077e10; frame = (0 0; 320 2320); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xb388bd0>; layer = <CALayer: 0x9276f60>; contentOffset: {0, 0}> 

Как я могу убедиться, что краны делают его управление прокручивается в поле зрения?

+0

проверить мое обновленное решение для получения более подробной информации – CoolMonster

ответ

0
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 

это создаст Scrollview на матч фактического вид зрения контроллера затем

UIView *newView=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,2320)]; 

[scrollView addSubview:newView]; 

// U также может создать этот вид с вашей перспективы в раскадровке, никогда не использовать самостоятельно. вид внутри свитка это сделать Ur иерархии критического надстройку на более продолжительный взгляд внутри контроллера затем передать этот вид на новый экземпляр в представление-контроллер затем использовать здесь

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, newview.frame.size.height); 

затем установите

OLD ответ

Set contentsize свойство ур зрения прокрутки Macth высоту ур зрения прокрутки и ширину вашей точки зрения внутренней точки зрения прокрутки ...

+0

Я делаю это в коде выше, он не работает. – ConfusedNoob

0

Методом проб и ошибок Я исправил это, но я не уверен, почему он работает. В приведенном выше коде я инициализирую UIScrollView, чтобы он имел такой же размер кадра, что и представление содержимого (что на самом деле не имеет смысла, не уверен, почему он вообще прокручивается).

Вместо этого я получил это работает подведению к экрану (так как это будет полный экран):

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

И теперь все это работает гладко. Странный; хотел бы понять, почему это так.

Смежные вопросы