Determine quando um Nsopenpanel fechará
-
20-09-2019 - |
Pergunta
Estou tentando determinar quando um Nsopenpanel está fechando antes de realmente fechar. Eu preciso fazer isso para que eu possa sobrepor outra janela com uma captura de tela do painel aberto para ser animado. Infelizmente, todas as notificações que você parecem acessar parecem disparar depois que a janela já foi fechada. Isso leva a uma gagueira chocante antes de iniciar sua transição.
Eu tentei:
- Usando métodos de delegados de NSWindow no painel aberto (aparentemente, nenhum dos métodos de delegados de NSWIDOW funcionam)
- Painel de monitoramento: userEredFilename: confirmado: (não chamado)
- Mostrar a caixa de diálogo com um retorno de chamada (o retorno de chamada acontece depois que o painel desaparece)
Solução 2
Outra maneira de lidar com isso foi examinar as subviews da Nsopenpanel para o botão Cancelar e trocar -se como alvo/ação. Foi isso que acabei fazendo.
Outras dicas
Você deve registrar seu controlador como delegado do painel aberto e depois implementar o -panel:isValidFilename:
Método delegado. Este método será chamado logo antes do fechamento da caixa de diálogo aberta.
Você deve retornar YES
Do método, se você deseja apenas a notificação. Retornando NO
Permite que você impeça que a caixa de diálogo aberta seja fechada.