我在一个NSScrollView中有一个NSWindow,但是它似乎被禁用了。看起来它可以工作,但是滚动条是对鼠标或滚动轮没有响应的。
当我将完全相同的NSScrollView放在一个新的XCode项目的窗口中时,它的工作原理非常完美。关于我制作窗口的方式有一些东西是阻止卷轴工作的。
我已经能够将其简化为下面的示例:
//Make a window
NSWindow* myWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(300, 300, 300, 300)
styleMask:NSTitledWindowMask
backing:NSBackingStoreRetained
defer:NO];
//Make a scroll view
NSScrollView *scrollview = [[NSScrollView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300)];
[scrollview setHasVerticalScroller:YES];
[scrollview setAcceptsTouchEvents:YES];
[myWindow setContentView:scrollview];
//Add something big to the scroll view
NSButton* btn = [[[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 600, 900)] autorelease];
[scrollview setDocumentView:btn];
//Show the window
[NSApp arrangeInFront:self];
[myWindow makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];有什么想法吗?
发布于 2011-07-01 23:22:24
根据我刚才所做的一些实验,您的问题似乎是如何指定NSBackingStoreRetained。医生说:
您不应该使用此模式。它结合了
NSBackingStoreNonretained的局限性和NSBackingStoreBuffered的内存使用。
他们还说:
在MacOSX10.5及更高版本的
中,对保留窗口的请求将导致窗口系统创建一个缓冲窗口,因为这更符合实际使用。
这似乎不准确;将buffer:参数切换到NSBackingStoreBuffered使窗口和滚动视图符合我的期望。(文档还说不要使用NSBackingStoreNonRetained,实际上,它似乎存在类似于NSBackingStoreRetained的问题。)
https://stackoverflow.com/questions/6553883
复制相似问题