Pergunta

Infelizmente, isso é difícil para mim me testar porque ainda tenho que ter um mouse mágico, mas me disseram meus testadores que têm um mouse mágico que a rolagem de momento não está funcionando no meu aplicativo. Não subclassei o NSSCROLLVIEW, mas a visualização do documento do ScrollView é todo personalizado. Eu não substituí a roda de rolagem: em nenhum lugar, e ainda assim o momento aparentemente não está funcionando. Eu nem tenho certeza por onde começar. Eu pensei que isso apenas enviaria eventos de roda de rolagem e as coisas se cuidariam. (Rolando com uma roda ou no trackpad do MBP funciona como esperado.) Obviamente, devo de alguma forma estar fazendo algo que o impede, mas nem sei por onde começar. Pensamentos?

Foi útil?

Solução

Eu descobri isso há algum tempo e o problema era que, no rolagem, eu estava fazendo muitas manipulações de visualização extravagante como no iPhone, o UitableView adiciona e remove as visualizações enquanto elas rola e deslocam a tela. Isso funcionou muito bem para o desempenho - mas quanto mais eu entrei na programação do OSX, mais percebi que isso era errado para o OSX (mas a idéia certa do iPhone).

De qualquer forma, o que realmente está acontecendo, ao que parece, é que, quando você faz algo como um rolo de roda, o evento de rolagem é enviado para a visão que está sob o cursor do mouse e depois ondula os respondedores/visualizações até chegar a algum lugar que lida com isso . Normalmente, isso não é um problema, mas com o momento rolando o sistema operacional está realmente apenas enviando eventos cada vez menores para a vista que estava sob o cursor Na época em que o momento começou. Isso significa que, se a visualização for removida durante o curso da rolagem (porque rola para fora da tela ou algo assim), ela quebra a corrente e o momento para porque a visualização que ainda está recebendo as mensagens de roda de rolagem não está mais na hierarquia de visualização.

A correção "simples" é não remover a exibição que obteve o último evento de roda de rolagem - mesmo que esteja fora da tela. A melhor correção (e a que eu fui) é não tentar usar o NSViews como se eles sejam uiviews e, em vez disso, desenhe o conteúdo usando o drawrect. :) Não é apenas cerca de um bilhão de vezes mais rápido, mas também funciona (TM) com rolagem de momento, porque é como o OSX espera que as coisas sejam feitas.

Repita depois de mim: OSX não é iPhoneos ..: P

Outras dicas

O comportamento de rolagem estranha pode ocorrer quando você não define as propriedades de rolagem e rolagem da página da própria NSSSCrollView.

Além disso, você simplesmente terá que obter um mouse mágico - com facilidade ou não :-) - para testá -lo ou postar todo o código da sua visualização personalizada, bem como o XIB que a contém. Não há como os outros oferecer mais do que suposições (como o acima) sem ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top