【问题标题】:NSScrollView not responding to gesturesNSScrollView 不响应手势
【发布时间】:2012-07-27 12:15:01
【问题描述】:

我在 Mac 上使用简单的 NSScrollView 时遇到了一个奇怪的问题。我刚开始在 Cocoa 中编程,但我之前在 iOS 上使用过 UIKit。我在我的 xib 文件中添加了一个 NSScrollView,并将当我在窗口中放置滚动视图时由 Xcode 自动生成的 NSView 子类化。子类只是将内容视图添加到滚动视图并绘制背景。这里是:

#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 应用程序中一样,如果我很快,我可以通过拖动滚动条来滚动。所以我认为 Scroll View 确实存在,但它不响应我的鼠标和手势。

我在这里做错了什么?我正在运行 Mountain Lion 和 Xcode 4.4,滚动视图前面没有视图。 提前致谢!

【问题讨论】:

  • 您的自定义视图是否足够高,需要滚动才能看到整个内容?
  • 是的,我可以在调整窗口大小后使用滚动条滚动,但无法使用默认手势滚动。

标签: macos cocoa nsscrollview osx-mountain-lion


【解决方案1】:

显然我的滚动视图的文档视图是 NSScrollView 的子类,这显然是错误的。我将其更改为 NSView 的子类,现在问题已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多