19

スクロール時に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

助けてください!私は立ち往生しています!

よろしくお願いします!

4

9 に答える 9

50

Scroll View 内のメイン ビューの File Inspector ペインで [Use Autolayout] の選択を解除することで、これを解決しました。

ここに画像の説明を入力ここに画像の説明を入力

「Autolayout」を有効にしたままにしたい場合は、「Editor -> Reslove Autolayout Issues -> Add Missing Constraints」を試してください。重要な制約は 'Bottom Space to: Superview' のようで、私の場合は -300 で、ビューの下部に 300 のスクロール スペースを与えます。

于 2013-09-20T16:28:49.870 に答える
28

user2394787 が述べたように:

スクロールビューを持つView Controllerを選択してから、

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

これでうまくいきます。

上記の回答に投票しようとしましたが、十分な担当者がいません。

于 2013-10-03T18:05:38.703 に答える
7

Editor > Resolve AutoLayout Issues > Add Missing Constraints in View Controller に移動して解決しました

お役に立てれば。

于 2013-09-22T09:26:10.407 に答える
6

「垂直スペース」を自動定数値に設定しました。場合によっては役立つかもしれません。

クリック

属性インスペクターで設定します

その標準にチェックを入れます

お役に立てば幸いです。どうも。

于 2013-12-04T03:44:38.673 に答える
2

これが機能するかどうかはわかりません

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [grillretterScroller setContentSize:CGSizeMake(self.view.bounds.size.width, 915)];
}
于 2013-09-11T21:52:37.173 に答える
0

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 に対する垂直方向の間隔、リーディング、トレーリング、ボトム) の制約を設定した後、スクロール ビューはコンテンツ サイズを計算し、機能し始めました。

自動レイアウトをオフにしても機能しますが、すべての人にとって理想的なソリューションではありません。ストーリーボードをいじって、スクロール ビューのすべてのサブビューに制約を設定するだけで、スクロール ビューの上部から下部まで、制約の垂直線が設定されます。

于 2014-10-20T15:04:31.653 に答える