2016-11-21 7 views
1

У меня есть NSPopover, который открывается, и если пользователь нажимает на другое место в приложении, popover закрывается.Как я могу сделать событие мыши постоянным, закрыв NSPopover?

Но проблема в том, что в настоящее время событие mouseDown расходуется во время процесса закрытия popover.

Возможно ли, чтобы событие mouseDown проходило к приложению, но также закрыло popover?

ответ

0

Вы можете подклассифицировать window s contentViewController s view объект. Я сделал это в файле раскадровки.

В этом случае используйте метод mouseDown(). Там вы можете создать уведомление, которое может быть получено в точке вашего проекта, где вам нужно знать о событии мыши.

Поскольку «корневой вид» захватывает почти все события mouseDown(), вам необходимо отфильтровать их, чтобы отвечать только на уведомление, когда отображается popover.

Не забудьте позвонить в super.mouseDown() в конце вашей реализации.

1

У меня была эта же проблема, поэтому мы изменили ее на использование типа поведения NSPopoverBehaviorSemitransient. Он больше не крадет mouseDown:, и мы просто добавили некоторые дополнительные случаи для закрытия popover вручную.