臨睡前寫點(diǎn)東西鳞疲,時(shí)間有限罪郊,又是一篇簡(jiǎn)單的文章,是關(guān)于手勢(shì)的尚洽,因?yàn)榘滋煊腥藛?wèn)到悔橄。
手勢(shì)Gestures,ionic官網(wǎng)上的文檔描述非常簡(jiǎn)單腺毫,就下面一段就沒(méi)了癣疟,估計(jì)很多人看完直接就懵了:只有6個(gè)事件嗎?
我粗略搜索了ionic關(guān)于手勢(shì)事件的文章潮酒,像pressup等內(nèi)容的睛挚,居然沒(méi)有,orz……ionic常常使用流行的庫(kù)來(lái)補(bǔ)充自身急黎,像slide組件就是封裝了swiper扎狱,而手勢(shì)是使用了另一個(gè)有名的庫(kù) HammerJS(想了解更多,戳它)勃教。所以我們通過(guò)了解HammerJS就可以知道ionic3的手勢(shì)事件——其實(shí)是6種淤击,我簡(jiǎn)單列一下分類及其下事件:
一、pan——平移
最小平移距離為10px故源,才會(huì)識(shí)別為pan.
pan
panstart
panmove
panend
pancancel
panleft
panright
panup
pandown
二污抬、pinch——手指縮放
最少需要兩個(gè)手指的操作,才會(huì)識(shí)別為pinch
pinch
pinchstart
pinchmove
pinchend
pinchcancel
pinchin
pinchout
三绳军、press——按下
最小按下持續(xù)時(shí)間251ms印机,才會(huì)識(shí)別為press
press
pressup
四、rotate——旋轉(zhuǎn)
最少旋轉(zhuǎn)角度為0(我懷疑這個(gè)表述)门驾,才會(huì)識(shí)別為rotate
rotate
rotatestart
rotatemove
rotateend
rotatecancel
五射赛、swipe——滑動(dòng)
要求移動(dòng)速度0.3px/ms,移動(dòng)距離超過(guò)10px猎唁,才會(huì)識(shí)別為swipe
swipe
swipeleft
swiperight
swipeup
swipedown
六咒劲、tap——輕觸
多次tap間隔為300ms顷蟆,用以區(qū)分是不是雙擊或其它诫隅,最大按下時(shí)間為250ms,用以區(qū)分press或其它
tap
上述事件在ionic中普通使用即可帐偎,具體事件參數(shù)通過(guò)$event獲取逐纬,如下:
<button ion-button (press)="pressEvent($event)" (pressup)="pressupEvent($event)">
長(zhǎng)按
</button>
總結(jié):其實(shí)就很簡(jiǎn)單的內(nèi)容,只是很多人不知道而已削樊。
補(bǔ)充說(shuō)明:
- 我寫這篇文檔的時(shí)候豁生,親自試驗(yàn)過(guò)可以的兔毒,如果不可以,那就是版本更新導(dǎo)致了甸箱,這我不再去一一驗(yàn)證處理育叁。
- ionic中swipe默認(rèn)配置是水平滑動(dòng)允許,而垂直方向的禁止芍殖,所以想要垂直滾動(dòng)的話豪嗽,要配置一下,應(yīng)該可以使用IonicGestureConfig豌骏,但我也沒(méi)去研究龟梦,網(wǎng)上有一個(gè)方案:ionic2的swipe事件的上下滑動(dòng)不能觸發(fā)的問(wèn)題解決