Credo di aver trovato una soluzione per questo. Add on-tap() per il vostro elemento in questo modo:
<div class="range">
<input type="range" on-tap="onTap($event)" ng-model="barProgress" min="0" max="100">
</div>
Poi aggiungere questo nel controller (o si sentono liberi di fare una direttiva fuori di esso)
$scope.onTap = function(e) {
if(ionic.Platform.isIOS()) {
$scope.barProgress = (e.target.max/e.target.offsetWidth)*(e.gesture.touches[0].screenX - e.target.offsetLeft);
}
};
Essenzialmente quello che stai facendo è calcolare la posizione del rubinetto relativamente allo schermo e quindi regolare il valore per lavorare con il cursore, per ottenere il valore di input effettivo che sarebbe stato . Quindi aggiorni il modello.
MODIFICA: Questo funzionerà solo con l'evento click/tap. Per renderlo più fluido e naturale, è necessario abilitare il trascinamento/trascinamento anche sulle tracce di scorrimento. Una correzione molto semplice consentirà agli sviluppatori di fare ciò. Basta aggiungere on-drag = "onTap ($ event)" in modo che il tuo html assomigli a questo.
<div class="range">
<input type="range" on-tap="onTap($event)" on-drag="onTap($event)" ng-model="barProgress" min="0" max="100">
</div>
l'interfaccia iOS di solito non utilizza alcun cursore laterale o inferiore tradizionale per lo scorrimento della pagina, quindi di quale tipo di dispositivo di scorrimento stiamo parlando esattamente? – holex
Sto parlando dell'ingresso ionico con tipo "range" Ad esempio: http://ionicframework.com/docs/components/#range – dragonself
Ho riscontrato lo stesso problema anche nel browser. Se utilizzo iPad safari per giocare con l'esempio precedente, fare clic in un'area lontana dal cursore non funzionerebbe. Da esso funziona nel mio mac safari. – dragonself