uiscrollview в контроллере представления в модальном переходе

Я использую Xcode 4.6 для создания приложения с вкладками iOS 6.x и использую раскадровку. Внутри каждого представления с вкладками нет проблем с добавлением UIScrollView и взаимодействием с любым из размещенных в нем элементов.

Однако... когда я нажимаю кнопку для перехода к новому представлению в моей раскадровке с помощью модального перехода, представление прокрутки не работает в модальном представлении.

Пример:

И TestViewController.h, и TRViewController.h содержат примерно такой код:

@property (strong, nonatomic) IBOutlet UIScrollView *scroller;

В методе viewDidLoad как в TestViewController.m, так и в TRViewController.m:

[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(320, 1000)];

Затем в IB выход правильно подключается к представлению:

введите здесь описание изображения

Таким образом, мой код реплицируется/одинаков для IB, .h и .m для каждого из представлений. В одной сфере работает, в другой нет. Помимо этого, единственный другой блок того, что, по моему мнению, может иметь отношение к моей проблеме, может быть из перехода:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"trSegue"]) {        
    TRViewController *_trVC = segue.destinationViewController;
    _trVC.delegate = self;
    }
}

Я просто пропустил что-то настолько очевидное? Я думаю, что это будет момент, когда я увижу решение...

Мысли/комментарии?

Заранее спасибо! - Дрю


person Drew    schedule 21.02.2013    source источник


Ответы (2)


Я понял. Вы должны поместить свой UIScrollView в другой пустой UIView. Ваша иерархия будет выглядеть примерно так в вашем конструкторе интерфейсов:

введите здесь описание изображения

Причина в том, как модальный переход отображает ваш контент. Когда вы выполняете push-переход, он фактически помещает ViewController на самый верхний уровень стека навигации, тогда как при модальном переходе он изменяет то, что отображается на экране. Я не уверен, заставит ли это Apple отклонить ваше приложение или нет, но оно работает.

person Scott Kaiser    schedule 15.07.2013
comment
Спасибо! У меня была аналогичная проблема с push segue, и я решил ее, выполнив это. Однако при возврате к VC, содержащему scrollview-in-a-UIView, он был перепутан - я решил это, установив смещение содержимого вручную на 0,0 в viewWillAppear(). - person Desty; 28.08.2013

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

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

person Drew    schedule 22.02.2013