ben*_*ree 4 cocoa objective-c nswindow nsscrollview
我在NSWindow里面有一个NSScrollView,但它似乎被禁用了.它看起来像它会工作,但滚动条不响应鼠标或滚轮.
当我在一个新的XCode项目的窗口中放置完全相同的NSScrollView时,它完美无缺.我正在制作阻止滚动工作的窗口的方式.
我已经能够简化它到这个例子:
//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];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
基于我刚刚做过的一些实验,你的问题似乎与指定有关NSBackingStoreRetained
.文档说:
您不应该使用此模式.它结合了
NSBackingStoreNonretained
内存使用的局限性NSBackingStoreBuffered
.
他们还说:
在Mac OS X 10.5及更高版本中,对保留窗口的请求将导致窗口系统创建缓冲窗口,因为它更符合实际使用.
这似乎不准确; 切换buffer:
参数NSBackingStoreBuffered
使窗口和滚动视图的行为与我预期的一样.(文档也说不使用NSBackingStoreNonRetained
,事实上,它似乎有类似的问题NSBackingStoreRetained
.)
归档时间: |
|
查看次数: |
1619 次 |
最近记录: |