gpt4 book ai didi

macos - NSScrollView 不响应手势

转载 作者:行者123 更新时间:2023-12-03 17:24:10 26 4
gpt4 key购买 nike

我在 Mac 上使用简单的 NSScrollView 时遇到了一个奇怪的问题。我刚刚开始使用 Cocoa 编程,但我之前有过在 iOS 上使用 UIKit 的经验。我将 NSScrollView 添加到我的 xib 文件中,并对当我将 ScrollView 放入窗口时由 Xcode 自动生成的 NSView 进行子类化。该子类只是将内容 View 添加到 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

当我运行此程序时, ScrollView 将正常显示,但我无法使用触控板滚动它。滚动条也不会出现。当我调整窗口大小时,滚动条会出现一秒钟,就像它们通常在 Cocoa 应用程序中一样,如果我速度很快,我可以通过拖动滚动条来滚动。所以我认为 ScrollView 确实存在,但它不响应我的鼠标和手势。

我在这里做错了什么?我正在运行 Mountain Lion 和 Xcode 4.4,并且 ScrollView 前面没有 View 。提前致谢!

最佳答案

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

关于macos - NSScrollView 不响应手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com