NSScroller внутри NSScrollView не меняет положение при изменении размера окна (в Swift)
Я создал NSView с Интерфейсным Разработчиком (Xcode 6.1). NSView имеет ограничения для каждого направления. При изменении размера окна с помощью мыши вручную NSView получает новый размер, а NSScroller получает новую позицию на правильной правой границе окна, как и ожидалось.
Когда я устанавливаю размер окна вручную (до того, как он станет видимым) с
myTextView.enclosingScrollView!.window!.setFrame(theRect)
или с
myTextView.window!.setFrame(theRect)
Затем окно хорошо изменяется (как только оно становится видимым), NSTextView также изменяет размеры, но NSScroller (который автоматически является частью NSTextview и не был создан или изменен отдельно) не перемещается, а стоит в середине ScrollView в его старая позиция. Текст, введенный в NSScrollView, использует полный размер и плавает за NSScroller, который соединяется, чтобы стоять над текстом.
В этом случае окно видимо перед установкой размера окна, тогда представление прокрутки усекается с правой или нижней стороны.
Когда я изменяю окно вручную, после определения размера и получения этого поведения, NSScroller переходит в правильное положение, и NSTextView больше не усекается. Таким образом, изменение размера окна вручную делает нечто большее, чем я делаю программно.
Что я должен сделать, чтобы Scroller перемещался с NSView, как изменение размера окна с помощью мыши?
1 ответ
Обычно это проблема при вызове UI-функций из фонового потока.
Это может быть разрешено при вызове из основного потока или принудительном вызове из основного потока с помощью этой команды:
dispatch_async(dispatch_get_main_queue())
{
// Place the UI Functions here
}
Пожалуйста, взгляните на: Open File Dialog падает в Swift