diff --git a/src/core/view/components/movable-area/index.vue b/src/core/view/components/movable-area/index.vue index 2b143b3499d76ed2db5ac7161aea17b65fae96ed..fdaa6524db04d0baf4e5ff2959786fb7ba512034 100644 --- a/src/core/view/components/movable-area/index.vue +++ b/src/core/view/components/movable-area/index.vue @@ -3,6 +3,7 @@ import { deepClone } from 'uni-shared' import { + initScrollBounce, disableScrollBounce } from 'uni-platform/helpers/scroll' @@ -34,6 +35,7 @@ export default { }, mounted: function () { this._resize() + initScrollBounce() }, methods: { _resize () { diff --git a/src/core/view/components/movable-view/index.vue b/src/core/view/components/movable-view/index.vue index 1c8712e452aabbe1509260d72b39e602ee6171ac..e006b7b292c678c34c96ca0cbb5cea5bc67221f5 100644 --- a/src/core/view/components/movable-view/index.vue +++ b/src/core/view/components/movable-view/index.vue @@ -12,6 +12,7 @@ import { STD } from './utils' import { + initScrollBounce, disableScrollBounce } from 'uni-platform/helpers/scroll' var requesting = false @@ -227,6 +228,7 @@ export default { this._friction.reconfigure(1, this.frictionNumber) this._STD.reconfigure(1, 9 * Math.pow(this.dampingNumber, 2) / 40, this.dampingNumber) this.$el.style.transformOrigin = 'center' + initScrollBounce() }, methods: { _getPx (val) { diff --git a/src/core/view/components/picker-view-column/index.vue b/src/core/view/components/picker-view-column/index.vue index 6b2073d5ec1f85d419edbdcb56cfac8ac8feb4ea..614c2c8d44853ddb9bb2a39ec01ef71befd80ba8 100644 --- a/src/core/view/components/picker-view-column/index.vue +++ b/src/core/view/components/picker-view-column/index.vue @@ -8,6 +8,7 @@ import { Spring } from 'uni-mixins/scroller/Spring' import { + initScrollBounce, disableScrollBounce } from 'uni-platform/helpers/scroll' @@ -93,6 +94,7 @@ export default { this.update() }) initClick(this.$el) + initScrollBounce() }, methods: { _setItemHeight (height) { diff --git a/src/core/view/components/scroll-view/index.vue b/src/core/view/components/scroll-view/index.vue index 416ca451a4828c122d9bb774686d0835631fa088..4112c1999518eed95012ad8f5d14b2b6101af4fd 100644 --- a/src/core/view/components/scroll-view/index.vue +++ b/src/core/view/components/scroll-view/index.vue @@ -74,6 +74,7 @@ import { supportsPassive } from 'uni-shared' import { + initScrollBounce, disableScrollBounce } from 'uni-platform/helpers/scroll' @@ -294,6 +295,7 @@ export default { passive: false } : false) this.$refs.main.addEventListener('touchend', this.__handleTouchEnd, passiveOptions) + initScrollBounce() }, activated () { // 还原 scroll-view 滚动位置 diff --git a/src/platforms/app-plus/helpers/scroll.js b/src/platforms/app-plus/helpers/scroll.js index 03892dca89d83c69a0b76d5af25edc335c5281c7..c837080aa03c915577d59e124d016f7ad6d8dc63 100644 --- a/src/platforms/app-plus/helpers/scroll.js +++ b/src/platforms/app-plus/helpers/scroll.js @@ -2,40 +2,26 @@ import { plusReady } from 'uni-shared' -let view +let webview let pullToRefreshStyle -let disabled -const lastAction = {} + +export function initScrollBounce () { + plusReady(() => { + if (!webview) { + webview = plus.webview.currentWebview() + } + if (!pullToRefreshStyle) { + pullToRefreshStyle = (webview.getStyle() || {}).pullToRefresh || {} + } + }) +} export function disableScrollBounce ({ disable }) { - function exec () { - if (!view) { - view = plus.webview.currentWebview() - } - if (!disabled) { - pullToRefreshStyle = (view.getStyle() || {}).pullToRefresh || {} - } - disabled = disable - if (pullToRefreshStyle.support) { - view.setPullToRefresh(Object.assign({}, pullToRefreshStyle, { - support: !disable - })) - } - } - const time = Date.now() - if (disable === lastAction.disable && time - lastAction.time < 20) { - return + if (pullToRefreshStyle && pullToRefreshStyle.support) { + webview.setPullToRefresh(Object.assign({}, pullToRefreshStyle, { + support: !disable + })) } - lastAction.disable = disable - lastAction.time = time - plusReady(() => { - if (plus.os.name === 'iOS') { - // 延迟执行避免iOS13触摸卡死 - setTimeout(exec, 20) - } else { - exec() - } - }) } diff --git a/src/platforms/h5/helpers/scroll.js b/src/platforms/h5/helpers/scroll.js index 1cb048e5f73cbd97daaf3139ce9cdeb8b1c76f8d..41c4d3b5121ce4a8354d112f1e4c53bfca226849 100644 --- a/src/platforms/h5/helpers/scroll.js +++ b/src/platforms/h5/helpers/scroll.js @@ -1,3 +1,7 @@ +export function initScrollBounce () { + +} + export function disableScrollBounce ({ disable }) {