質問

Mac上の単純なNSScrollViewに奇妙な問題があります。ココアでプログラミングを始めましたが、私はiOS上のUIKITに関する以前の経験をしました。私のxibファイルにNSScrollViewを追加し、私のウィンドウでスクロールビューを削除したときにXcodeによって自動的に生成されたNSViewをサブクラス化しました。サブクラスは、ScrollViewにコンテンツビューを追加して背景を描画します。ここでは:

#import "TweetsView.h"

@implementation TweetsView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)awakeFromNib {

    [self reload];

}

- (void)reload {

    //Retrieve tweets
    ACAccount *account = [[TwitterModel retrieveTwitterAccounts] objectAtIndex:1];
    TwitterModel *model = [[TwitterModel alloc] init];
    NSArray *timeline = [model retrieveMainTimelineWithAccount:account];

    //Display the tweets
    int stackHeight = 0;
    for (NSDictionary *tweetDictionary in timeline) {

        TweetView *tweetView = [[TweetView alloc] initWithFrame:NSMakeRect(0, stackHeight, self.frame.size.width, 60)];
        [tweetView setMainText:[tweetDictionary objectForKey:@"text"]];
        [self addSubview:tweetView];

        stackHeight += (int)tweetView.frame.size.height;
    }
    self.frame = NSMakeRect(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, stackHeight);

}

- (void)drawRect:(NSRect)dirtyRect
{

    [[NSColor colorWithCalibratedRed:0.96 green:0.96 blue:0.96 alpha:1.0] setFill];
    NSRectFill(dirtyRect);

    [super drawRect:dirtyRect];

}

- (void)setTweets:(NSArray *)tweets {
    _tweets = tweets;
}

- (NSArray *)tweets {
    return _tweets;
}

@end
.

このプログラムを実行すると、スクロールビューは正常に表示されますが、トラックパッドでスクロールできません。スクロールバーも表示されません。ウィンドウのサイズを変更すると、スクロールバーは通常COCOAアプリケーションで実行されているように1秒のように表示されます。クイックであれば、スクロールバーをドラッグしてスクロールできます。だから私はスクロールビューが存在すると思いますが、マウスやジェスチャーには反応しません。

ここで何が悪いのですか?私はマウンテンライオンとXcode 4.4を実行しています、そしてスクロールビューの前に視点はありません。 事前にありがとう!

役に立ちましたか?

解決

私のスクロールビューのドキュメントビューは、明らかに間違っているNSScrollViewのサブクラスでした。私はそれをNSViewのサブクラスに変更し、そして今問題は修正されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top