как добавить/сделать вид видимым под scrollView?

Я частично добавил прокрутку, создав экземпляр класса, который является подклассом uiscrollview (ниже называемый ScrollViewManager), чтобы переопределить touchesEnded. Проблема в том, что хотя в моем классе теперь есть прокрутка и касание, я больше не вижу свой файл представления/пера, хотя он реагирует на прикосновения и прокручивается нормально.

Мои мысли состоят в том, чтобы добавить обратно перо MyClass в качестве подвида? или не знаю... Кажется, что он есть, но просто скрыт за этим scrollView.

Выдержка из «Myclass: UIViewController» содержит эти строки кода в viewDidLoad, чтобы получить действие прокрутки с ответом на касание.

Большое спасибо. Очень, очень много.

scrollView = [[ScrollViewManager alloc] initWithFrame:self.view.frame]; 
scrollView.contentSize = CGSizeMake(320, 600);
[scrollView setUserInteractionEnabled:TRUE];
[scrollView setScrollEnabled:TRUE];
self.view = scrollView;

//trying with this line to add my nib for this class on top of the scroll view
    //which doesn't work: 'Accessing unknown 'view' class method'
[scrollView addSubview:Myclass.view];
    [scrollView release];

person Ernest    schedule 17.03.2011    source источник


Ответы (2)


Строка self.view = scrollView делает ваше представление, на которое указывают контроллеры представления, прокруткой. т.е. self.view и scrollView теперь указывают на один и тот же объект

после этого, когда вы пытаетесь [scrollView addSubview: Myclass.view]; что на самом деле происходит, так это то, что вы добавляете scrollView в свой scrollView и получаете доступ к свойству просмотра scrollview.

Просто удалите строку self.view = scrollView и сделайте это

[self.view addSubView:scrollView];
[scrollView release];

Надеюсь, это сработает.

person Asad Khan    schedule 17.03.2011

почему-то не могу добавить комментарий к вашему сообщению. Это не сработало. Apple рассказывает о добавлении подпредставления здесь: но не объясняет как. Их код ниже для добавления аспекта прокрутки, как я сделал выше. Теперь я возился с попыткой добавить свое представление в качестве подвида:

 UIView *newView = [[NSBundle mainBundle] loadNibNamed:@"MyClassView" owner:self options: nil];
[scrollView addSubview:newView];

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

  (void)loadView {
    CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];
    scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect];
    self.view=scrollView;
    scrollView.contentSize=CGSizeMake(320,758);
    scrollView.contentInset=UIEdgeInsetsMake(64.0,0.0,44.0,0.0);


// do any further configuration to the scroll view
// add a view, or views, as a subview of the scroll view.

// release scrollView as self.view retains it
self.view=scrollView;
[scrollView release];

}

person Ernest    schedule 17.03.2011
comment
Вы выпускаете новый вид? Если да, то не стоит. - person Praveen S; 17.03.2011
comment
Нет, не выпускаю. Я также отказался от этого бесплодного подхода. После того, как я немного поиграл, я заметил, что могу добавлять текстовые поля и т. Д. В код, и они будут отображаться и работать с действующей прокруткой. Проблема в том, что у меня есть около 30 элементов, которые обрабатывают много взаимодействий, поэтому я очень не хочу идти по этому пути. Кажется просто странным и удручающим, я просто не могу добавить вид, который я уже сделал (и работает без прокрутки касанием). Любые другие предложения чрезвычайно приветствуются. Спасибо за предложение. - person Ernest; 17.03.2011
comment
Только что заметил, что я могу добавить каждый из своих компонентов пера в качестве подвида, и они сохранят свою функциональность. Так что, если станет еще хуже, это может быть обходным путем. Все еще чувствую, что у меня может быть одна строка кода для решения исходной проблемы. Эта волшебная линия... - person Ernest; 17.03.2011