2011-07-01 5 views
4

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]; 

어떤 아이디어?

답변

7

내가 실험 한 일부 실험을 바탕으로 한 문제는 NSBackingStoreRetained으로 지정되는 것으로 보입니다. 문서는 다음과 같이 말합니다.

이 모드는 사용하지 않아야합니다. NSBackingStoreNonretained의 한계와 NSBackingStoreBuffered의 메모리 사용을 결합합니다.

그들은 또한 말 :

맥 OS X 10.5에서

이상 유지 창에 대한 요청이 더 잘 일치 실제 사용 등의 버퍼를 가진 창을 생성하는 윈도우 시스템에서 발생합니다.

정확한 것은 아닙니다. buffer: 인수를 NSBackingStoreBuffered으로 전환하면 창과 스크롤보기가 나를 위해 예상대로 동작합니다. (도큐멘트에서는 NSBackingStoreNonRetained을 사용하지 말고 실제로는 NSBackingStoreRetained과 비슷한 문제가있는 것으로 보입니다.)

+0

예, 예, 예. NSBackingStoreBuffered가 그것을 고쳤습니다. 정말 고맙습니다. 또한 NSWindow에서 일부보기와 함께 다른 비정상적인 문제의 캐스케이드를 수정했습니다. – bendytree

관련 문제