2014-11-26 8 views
0

Interface Builder (Xcode 6.1)로 NSView를 만들었습니다. NSView에는 각 방향에 대한 제약이 있습니다. 마우스로 창 크기를 수동으로 변경하면 NSView가 새로운 크기로 바뀌고 NSScroller가 창 오른쪽의 올바른 경계에 새로운 위치를 가져옵니다.NSScrollView 내의 NSScroller가 윈도우 크기를 조정할 때 위치를 변경하지 않습니다 (Swift에서)

myTextView.enclosingScrollView!.window!.setFrame(theRect) 

또는

myTextView.window!.setFrame(theRect) 

그런 다음 윈도우가 (즉시 표시됩니다으로) 잘 크기를 조정하여 (가 가시화되기 전에) 내가 수동으로 창 크기를 설정

의 NSTextView도 크기를 조정하지만 NSScroller (자동으로 NSTextview의 일부이며 별도로 작성되거나 수정되지 않음)는 이동하지 않지만 이전 위치의 ScrollView 중간에 있습니다. NSScrollView에 입력 된 텍스트는 전체 크기를 사용하고 NSScroller 뒤에서 이동합니다. NSScroller는 텍스트의 맨 위에 서 있어야합니다.

이 경우, 창 크기를 설정하기 전에 창을 볼 수 있고 스크롤보기는 오른쪽 또는 아래쪽에서 잘립니다.

크기를 정해서이 동작을 얻은 후 수동으로 창을 바꿀 때 NSScroller가 올바른 위치로 점프하고 NSTextView가 더 이상 잘리지 않습니다. 따라서 Window Size를 수동으로 변경하면 프로그래밍 방식으로 더 많은 작업이 수행됩니다.

마우스로 창 크기를 변경하는 것과 같이 Scroller가 NSView로 이동한다는 것을 어떻게해야합니까?

답변

0

이것은 백그라운드 스레드에서 UI 함수를 호출 할 때 일반적으로 발생하는 문제입니다. 메인 스레드에서 호출 또는 명령으로 메인 쓰레드에 의해 호출에 강제 때

는 그것은 besolved 수

: Open File Dialog crashes in Swift

:

dispatch_async(dispatch_get_main_queue()) 
{ 
    // Place the UI Functions here 
} 

은에서 참조하시기 바랍니다