Подтвердить что ты не робот

UIScrollView не прокручивается после обновления до iOS7/xcode 5

У меня есть приложение, которое в xcode 4.5 и ios 6.1 отлично работает при прокрутке. Однако после загрузки xcode 5 и iOS 7 мои просмотры прокрутки больше не работают.

Вот мой .h файл:

#import <UIKit/UIKit.h>

@interface GrillretterViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIScrollView *grillretterScroller;
@property (assign) CGPoint rememberContentOffset;

@end

И вот мой .m файл:

#import "GrillretterViewController.h"

@interface GrillretterViewController ()

@end

@implementation GrillretterViewController
@synthesize grillretterScroller, rememberContentOffset;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [grillretterScroller setScrollEnabled:YES];

    // Do any additional setup after loading the view.
}

- (void) viewDidAppear:(BOOL)animated {
    [grillretterScroller setContentSize:CGSizeMake(300, 915)];

}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES];
    self.grillretterScroller.contentOffset = CGPointMake(0, 0);
}

- (void)viewWillDisappear:(BOOL)animated {
    self.rememberContentOffset = self.grillretterScroller.contentOffset;
    [super viewWillDisappear:animated];
}

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    self.grillretterScroller.contentOffset = CGPointMake(0, self.rememberContentOffset.y);
}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ПОЖАЛУЙСТА, помогите! Я застрял!

С уважением!

4b9b3361

Ответ 1

Я решил это, сняв флажок "Использовать автозапуск" в панели "Инспектор файлов" основного вида в представлении прокрутки.

enter image description hereenter image description here

Если вы хотите, чтобы функция "Автозапуск" была включена, попробуйте "Редактор → Повторить проблемы автоаудита → Добавить недостающие ограничения". Ключевым ограничением, по-видимому, является "Bottom Space to: Superview", и в моем случае было -300, что дало 300 прокруток на botton view.

Ответ 2

Как указано пользователем2394787:

Выберите свой контроллер просмотра с прокруткой, затем перейдите к

Editor -> Resolve AutoLayout Issues -> Add Missing Contraints in [your view controller].  

Это заставило бы его работать.

Я попытался проголосовать за вышеприведенный ответ, но у меня недостаточно отзывов.

Ответ 3

Я просто решил это, перейдя к Редактоp > Разрешить проблемы автозапускa > Добавить отсутствующие ограничения в контроллере просмотра

Надеюсь, это поможет.

Ответ 4

Я просто установил "Вертикальное пространство" в значение автоматической константы. Может быть, это поможет в некоторых случаях.

Click the "Vertical Space"

и установите его в инспекторе атрибутов

tick that Standard

Я надеюсь, что это поможет. спасибо.

Ответ 5

Я не уверен, что это сработает

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [grillretterScroller setContentSize:CGSizeMake(self.view.bounds.size.width, 915)];
}

Ответ 6

- (void)viewDidLayoutSubviews {
    [self performSelector:@selector(updateContentSize)
               withObject:nil
               afterDelay:0.25];

}

-(void)updateContentSize{
    UIView *viewLast = [viewContent viewWithTag:100];
    scrollViewAd.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, CGRectGetMaxY(viewLast.frame));
}

Ответ 7

У меня не было фиксированной высоты, поэтому я устанавливаю содержимое прокрутки в коде в соответствии с моей меткой внутри scrollview

CGSize scrollViewContentSize = CGSizeMake(320, myLabel.frame.size.height);
[self.scrollView setContentSize:scrollViewContentSize];

Ответ 8

При включенном автозапуске убедитесь, что между UIScrollView и его подвью используется вертикальное расстояние (@ "V: | - [subview] - |" ). Если ваш scrollView предназначен для горизонтальной прокрутки, примените горизонтальный интервал (@ "H: | - [subview] - |" ).

Ответ 9

У меня была такая же проблема после разработки приложения для iOS8, а затем тестирование на iOS7. Хотя я пробовал установить определенные параметры в представлении прокрутки, например:

[self.scrollView setScrollEnabled:YES];
[self.scrollView setContentSize:CGSizeMake(self.view.frame.size.width, 700)];
[self.scrollView setContentOffset:CGPointZero];

Решение, которое сработало для меня, заключалось в том, чтобы зайти в файл раскадровки и убедиться, что у вас есть ограничения, установленные для всех видов в прокрутке. Размер содержимого представления прокрутки вычисляется ограничениями каждого поднабора в представлении прокрутки, поэтому в моем случае у меня были UIView и UITableView. После установки ограничений для UIView (верхний, верхний, конечный, высота) и UITableView (вертикальный интервал до UIView, ведущий, конечный, нижний), прокрутка отображает размер содержимого и начинает функционировать.

При выключении Auto Layout это работает, это не идеальное решение для всех. Просто поиграйте со Storyboard и установите ограничения для всех подпунктов в представлении прокрутки, чтобы установить вертикальную линию ограничений, начиная с верхней части прокрутки и снизу.