У меня есть подкласс NSView, где я обрабатываю событие -mouseDown: для получения позиции щелчка на экране. С этой позицией я определил точку, которую я буду использовать для создания прямоугольника на -drawRect: он работает нормально.Ошибка при настройке -setWantsLayer: on Lion
НО ... когда я настраиваю хочет, что все не работает. Когда я получаю позицию ввода, я посмотрел, что ось Y имеет увеличение на 20 пунктов, и я не знаю, что происходит ... Может ли кто-нибудь объяснить? Как я исправить эту проблему?
Моделирование:
я нажимаю на координаты х: 100; y: 100; и drawRect рисует прямоугольник на x: 100; y: 100; Все в порядке, это то, чего я хочу.
С setWantsLayer: ДА
я нажимаю на координаты х: 100; y: 100; и drawRect рисует прямоугольник на x: 100; y: 120; (или что-то вроде этого)
Возможно ли использовать CALayers без установки -setWantsLayer в YES? Я пытаюсь понять это, но я понятия не имею, что происходит ... Мне нужна твоя помощь.
ОБНОВЛЕНИЕ: Я пытаюсь понять это, и сейчас я провел много тестов ... Теперь я могу сказать, что проблема связана с -mouseDown: из NSView, когда я настраивал -setWantsLayer, 't работает, как ожидается больше ...
У меня в моем окне CustomView, и я создал подкласс NSView и задан как класс CustomView. CustomView находится в позиции (0, 20). Координатная ориентация не переворачивается.
Я считаю, что когда я настраивал NSView, нужно, чтобы слой -mouseDown: обновить фрейм до позиции (0, 0) (или, другими словами, получить рамку NSWindow) вместо (0, 20). Когда это происходит, каждая позиция из -mouseDown: получает увеличение на 20 точек по оси Y. Я не знаю, правильно ли я говорю, но это факты, которые я получаю в результате моих тестов.
Кто-то может помочь мне разобраться в этом?