当我在一个新的XCode项目的窗口中放置完全相同的NSScrollVIEw时,它完美无缺.我正在制作阻止滚动工作的窗口的方式.
我已经能够简化它到这个例子:
//Make a windowNSWindow* myWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(300,300,300) styleMask:NSTitleDWindowMask backing:NSbackingStoreRetained defer:NO];//Make a scroll vIEwNSScrollVIEw *scrollvIEw = [[NSScrollVIEw alloc] initWithFrame:NSMakeRect(0,300)];[scrollvIEw setHasverticalScroller:YES];[scrollvIEw setAcceptstouchEvents:YES];[myWindow setContentVIEw:scrollvIEw];//Add something big to the scroll vIEwNSbutton* btn = [[[NSbutton alloc] initWithFrame:NSMakeRect(0,600,900)] autorelease];[scrollvIEw setdocumentVIEw:btn];//Show the window[NSApp arrangeInFront:self];[myWindow makeKeyAndOrderFront:self];[NSApp activateIgnoringOtherApps:YES];
有任何想法吗?
解决方法 基于我刚刚做过的一些实验,你的问题似乎与指定NSbackingStoreRetained有关.文档说:You should not use this mode. It combines the limitations of
NSbackingStoreNonretained
with the memory use ofNSbackingStoreBuffered
.
他们还说:
In Mac OS X 10.5 and later,requests for retained windows will result in the window system creating a buffered window,as that better matches actual use.
这似乎不准确;切换缓冲区:NSbackingStoreBuffered的参数使窗口和滚动视图的行为符合我的预期. (文档也说不使用NSbackingStoreNonRetained,事实上,它似乎有类似于NSbackingStoreRetained的问题.)
总结以上是内存溢出为你收集整理的objective-c – NSWindow的NSScrollView全部内容,希望文章能够帮你解决objective-c – NSWindow的NSScrollView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)