Domanda

Purtroppo questo è difficile per me di mettermi alla prova, perché devo ancora ottenere un Magic Mouse di mio, ma mi è stato detto dai miei tester che hanno un Magic Mouse che lo slancio lo scorrimento non funziona nella mia app . Non ho una sottoclasse NSScrollView, ma visualizzazione del documento di ScrollView è tutto personalizzato. Non ho sovrascritto rotella: ovunque, sia, e tuttavia lo slancio apparentemente appena non funziona. Io non sono nemmeno sicuro da dove cominciare. Ho pensato che sarebbe sufficiente inviare eventi scrollwheel e le cose si sarebbe preso cura di se stessi. (Scorrimento con una ruota o sulle opere trackpad MBP come previsto.) Ovviamente devo in qualche modo fare qualcosa che lo impedisce, ma io non so nemmeno da dove cominciare. Pensieri?

È stato utile?

Soluzione

ho capito questo fuori un po 'fa e il problema era che sul rotolo, stavo facendo un sacco di fantasia manipolazione visione un po' come come su iPhone l'UITableView aggiunge e rimuove viste come scorrere sullo schermo e fuori. Questo ha funzionato grande per le prestazioni -. Ma più ho avuto in programmazione OSX, più mi rendevo conto che questo era sbagliato per OSX (ma l'idea giusta di iPhone)

In ogni caso, ciò che sta realmente accadendo, a quanto pare, è che quando si fa qualcosa come una rotella di scorrimento, l'evento di scorrimento viene inviato alla vista che è sotto il cursore del mouse e poi si increspa le responder / viste fino a quando si arriva da qualche parte che gestisce. Normalmente questo non è un problema, ma con slancio a far scorrere il sistema operativo è in realtà solo l'invio di eventi scrollwheel sempre più piccoli alla vista che era sotto il cursore al momento della quantità di moto ha iniziato . Ciò significa che se la vista viene rimosso durante il corso di scorrimento (perché scorre fuori dallo schermo o qualcosa del genere), si rompe la catena e la quantità di moto si ferma perché la vista che sta ancora ricevendo i messaggi scrollwheel non è più nella gerarchia vista è.

La correzione "semplice" è quello di non togliere la vista che ha ottenuto l'ultimo evento rotella - anche se è fuori dallo schermo. La correzione migliore (e quello sono andato con) è quello di non cercare di utilizzare NSViews come sono UIViews e invece solo disegnare il contenuto utilizzando drawRect. :) Non solo è che circa un miliardo di volte più veloce, funziona da solo (tm) con slancio lo scorrimento perché è come OSX si aspetta che le cose da fare.

Ripeti dopo di me: OSX non è iPhoneOS ..: P

Altri suggerimenti

Odd comportamento di scorrimento può verificarsi quando non si impostano le proprietà della linea di scorrimento e Pagina di scorrimento del NSScrollView stesso.

Oltre a ciò, si sta semplicemente andando ad avere per ottenere un Magic Mouse - facile a dirsi o meno :-) - alla prova da soli o inviare l'intero codice di visualizzazione personalizzata così come la XI ter che lo contiene. Non c'è modo gli altri in grado di offrire più di supposizioni (come sopra), senza di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top