У меня есть подкласс NSView, который можно перетаскивать в его суперпредставлении. Я перемещаю представления, вызывая методы NSF setFrameOrigin и setFrameRotation в моем обработчике события mouseDragged. Представления перемещаются и поворачиваются при каждом вызове.
У меня есть несколько экземпляров этих представлений, содержащихся в одном суперпредставлении. Проблема, с которой я столкнулся, заключается в том, что, когда одно представление перетаскивается поверх другого, оно оставляет артефакты в представлении, которое затмевает. Я записал короткое видео об этом в действии. К сожалению, из-за сжатия видео артефакты не очень заметны.
Я сильно подозреваю, что это связано с синхронным переводом и вращением. Quartz Debug показывает, что прямоугольник окклюзионного (или окклюзионного) вида обновляется при перетаскивании другого вида ( видео здесь ); каким-то образом этот прямоугольник неправильно просчитывается механизмом рисования, поэтому часть вида, которая должна быть перерисована, не является.
Кикер, я понятия не имею, как это исправить. Я не могу найти способ вручную указать прямоугольник обновления в документах, и я не уверен, что это должно произойти. Есть идеи? Спасибо!