objective-c – NSWindow的NSScrollView

objective-c – NSWindow的NSScrollView,第1张

概述我在NSWindow里面有一个NSScrollView,但它似乎被禁用了.看起来它会起作用,但滚动条对鼠标或滚轮没有响应. 当我在一个新的XCode项目的窗口中放置完全相同的NSScrollView时,它完美无缺.我正在制作阻止滚动工作的窗口的方式. 我已经能够简化它到这个例子: //Make a windowNSWindow* myWindow = [[NSWindow alloc] init 我在NSWindow里面有一个NSScrollVIEw,但它似乎被禁用了.看起来它会起作用,但滚动条对鼠标或滚轮没有响应.

当我在一个新的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 of NSbackingStoreBuffered.

他们还说:

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存