2011-09-03 4 views
12

Привет, я внедрил NSPopover в одном из моих приложений, но popover не будет закрыт. Я предполагаю, что он должен закрыть, как только я щелкнул что-то еще, но это не так. Я знаю, что есть действие close popover, но это работает только для другой кнопки. Как я могу заставить его посмотреть, что popover открыт и когда он открыт, чтобы закрыть popover, когда я нажимаю ту же кнопку?Как сделать действие, чтобы закрыть NSPopover?

+0

Выяснено, как это сделать. Сначала нажмите Popover в Interface Builder в xCode 4, затем перейдите в раздел атрибутов на боковой панели и измените поведение popover на Transient вместо стандартного приложения. Это должно заставить его исчезнуть! – sridvijay

+3

Конгрессы по решению вашей проблемы, но гораздо лучше предоставить ответы, даже если вы отвечаете на свой вопрос, предоставив фактический ответ. Нажмите кнопку «Ответить на свой вопрос» ниже. Кроме того, этот вопрос очень плохо отмечен. Подумайте о добавлении тега или двух, которые относятся к платформе или языку, о котором вы спрашиваете. Это поможет другим, у кого есть тот же вопрос, найти ответ, который вы разработали! – SingleNegationElimination

+0

Спасибо, я просто добавил еще один ответ и добавил еще несколько тегов! – sridvijay

ответ

23

Я решил проблему!

  • Сначала перейдите и нажмите на ваш .xib-файл.
  • Где вы видите первого владельца блока и владельца файлов - щелкните по popover.
  • На боковой панели перейдите в центр атрибутов
  • Измените поведение от Application-Defined to Transient и оно должно работать!

Это должно заставить popover исчезнуть, как только кто-то щелкнул снаружи.

Другой способ закрыть popover - это отдельная кнопка. Просто добавьте еще NSButton, а затем свяжите его с popover на боковой панели и установите для него принятые действия -> выполнить закрытие:

+2

Кроме того, если вы выберете Semi-transient, ваш первый клик за пределами popover закроет popover и зарегистрирует его под ним (т. Е. Если вы нажмете прямо на кнопку в другом представлении, popover закроется и кнопка будет нажата.) –