UIScrollView не прокручивается после обновления до iOS7 / xcode 5
У меня есть приложение, которое в xcode 4.5 и ios 6.1 отлично работало при прокрутке. Однако после загрузки xcode 5 и iOS 7 мои просмотры прокрутки больше не работают. ???
Вот мой .h файл:
#import @interface GrillretterViewController : UIViewController @property (strong, nonatomic) IBOutlet UIScrollView *grillretterScroller; @property (assign) CGPoint rememberContentOffset; @end
И вот мой файл .m:
- Как получить размер UIKeyboard с Apple iPhone SDK
- iPhone - Что такое reuseIdentifiers (UITableViewCell)?
- Создать случайное число в пределах диапазона?
- Соглашение об именах iPhone ivar
- Ошибка с NSJSONSerialization - Недопустимый тип записи JSON (меню)
#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
Пожалуйста помоги! Я застрял!
С наилучшими пожеланиями!
- Как я могу заставить UITextField двигаться вверх, когда клавиатура присутствует?
- канонический способ рандомизации NSArray в Objective C
- Есть ли какие-либо frameworks для выделения текста в pdf-файле после рендеринга на iphone
- Как сделать естественный вид на NSArray?
- SplitView как приложение Facebook на iPhone
- Получить значение RGB из пресетов UIColor
- objective C: Как вы можете повернуть текст для UIButton и UILabel?
- Как найти причину ошибки «double free» malloc?
Я решил это, сняв флажок «Использовать автозапуск» в панели «Инспектор файлов» основного вида в представлении «Прокрутка».
Если вы хотите включить функцию «Автоспуск», попробуйте «Редактор -> Повторить проблемы автоаудита -> Добавить недостающие ограничения». Ключевым ограничением является «Bottom Space to: Superview», и в моем случае было -300, что дало 300 прокруток на бета-версии.
Как упоминалось пользователем2394787:
Выберите свой controller просмотра с прокруткой, затем перейдите к
Editor -> Resolve AutoLayout Issues -> Add Missing Contraints in [your view controller].
Это заставит его работать.
Я попытался проголосовать за вышеупомянутый ответ, но у меня не хватило репутации.
Я просто решил это, перейдя в Редактор> Устранение проблем автозапуска> Добавить отсутствующие ограничения в View Controller
Надеюсь это поможет.
Я просто установил «Вертикальное пространство» в значение auto constant. Может быть, это поможет в некоторых случаях.
и установите его в инспекторе атрибутов
Надеюсь, это поможет. Спасибо.
Я не уверен, что это сработает
- (void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [grillretterScroller setContentSize:CGSizeMake(self.view.bounds.size.width, 915)]; }
- (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)); }
У меня не было фиксированной высоты, поэтому я установил содержимое прокрутки в коде в соответствии с моей меткой внутри scrollview
CGSize scrollViewContentSize = CGSizeMake(320, myLabel.frame.size.height); [self.scrollView setContentSize:scrollViewContentSize];
При включенном автозапуске убедитесь, что между UIScrollView и его подвью используется вертикальный интервал (@ “V: | – [subview] – |”). Если ваш scrollView предназначен для горизонтальной прокрутки, примените горизонтальный интервал (@ “H: | – [subview] – |”).
У меня была такая же проблема после разработки приложения для 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 и установите ограничения для всех подзонов в представлении прокрутки, чтобы установить вертикальную линию ограничений, начиная с верхней части прокрутки и снизу.