提交 124cfdcf 编写于 作者: Q qiang

feat(App): onKeyboardHeightChange, offKeyboardHeightChange

上级 54b021ff
......@@ -1129,6 +1129,7 @@ var serviceContext = (function (vue) {
const ON_LAUNCH = 'onLaunch';
const ON_ERROR = 'onError';
const ON_THEME_CHANGE = 'onThemeChange';
const ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';
//Page
const ON_LOAD = 'onLoad';
const ON_READY = 'onReady';
......@@ -6591,6 +6592,15 @@ var serviceContext = (function (vue) {
plus.key.hideSoftKeybord();
resolve();
});
function onKeyboardHeightChangeCallback(res) {
UniServiceJSBridge.invokeOnCallback(ON_KEYBOARD_HEIGHT_CHANGE, res);
}
const onKeyboardHeightChange = defineOnApi(ON_KEYBOARD_HEIGHT_CHANGE, () => {
UniServiceJSBridge.on(ON_KEYBOARD_HEIGHT_CHANGE, onKeyboardHeightChangeCallback);
});
const offKeyboardHeightChange = defineOffApi(ON_KEYBOARD_HEIGHT_CHANGE, () => {
UniServiceJSBridge.off(ON_KEYBOARD_HEIGHT_CHANGE, onKeyboardHeightChangeCallback);
});
class DownloadTask {
constructor(downloader) {
......@@ -8797,6 +8807,16 @@ var serviceContext = (function (vue) {
};
emit(ON_THEME_CHANGE, args);
});
let keyboardHeightChange = 0;
plusGlobalEvent.addEventListener('KeyboardHeightChange', function (event) {
// 安卓设备首次获取高度为 0
if (keyboardHeightChange !== event.height) {
keyboardHeightChange = event.height;
emit(ON_KEYBOARD_HEIGHT_CHANGE, {
height: keyboardHeightChange
});
}
});
plusGlobalEvent.addEventListener('plusMessage', subscribePlusMessage);
// nvue webview post message
plusGlobalEvent.addEventListener('WebviewPostMessage', subscribePlusMessage);
......@@ -10776,6 +10796,8 @@ var serviceContext = (function (vue) {
chooseVideo: chooseVideo,
showKeyboard: showKeyboard,
hideKeyboard: hideKeyboard,
onKeyboardHeightChange: onKeyboardHeightChange,
offKeyboardHeightChange: offKeyboardHeightChange,
downloadFile: downloadFile,
request: request,
connectSocket: connectSocket,
......
import { ON_KEYBOARD_HEIGHT_CHANGE } from '@dcloudio/uni-shared'
import {
API_SHOW_KEYBOARD,
API_HIDE_KEYBOARD,
defineAsyncApi,
} from '@dcloudio/uni-api'
import type {
API_TYPE_SHOW_KEYBOARD,
API_TYPE_HIDE_KEYBOARD,
defineAsyncApi,
defineOnApi,
defineOffApi,
} from '@dcloudio/uni-api'
export const showKeyboard = defineAsyncApi<API_TYPE_SHOW_KEYBOARD>(
......@@ -23,3 +24,25 @@ export const hideKeyboard = defineAsyncApi<API_TYPE_HIDE_KEYBOARD>(
resolve()
}
)
function onKeyboardHeightChangeCallback(res: any) {
UniServiceJSBridge.invokeOnCallback(ON_KEYBOARD_HEIGHT_CHANGE, res)
}
export const onKeyboardHeightChange = defineOnApi<
typeof uni.onKeyboardHeightChange
>(ON_KEYBOARD_HEIGHT_CHANGE, () => {
UniServiceJSBridge.on(
ON_KEYBOARD_HEIGHT_CHANGE,
onKeyboardHeightChangeCallback
)
})
export const offKeyboardHeightChange = defineOffApi<
typeof uni.offKeyboardHeightChange
>(ON_KEYBOARD_HEIGHT_CHANGE, () => {
UniServiceJSBridge.off(
ON_KEYBOARD_HEIGHT_CHANGE,
onKeyboardHeightChangeCallback
)
})
......@@ -3,6 +3,7 @@ import {
ON_APP_ENTER_BACKGROUND,
ON_APP_ENTER_FOREGROUND,
ON_THEME_CHANGE,
ON_KEYBOARD_HEIGHT_CHANGE,
} from '@dcloudio/uni-shared'
import { EVENT_BACKBUTTON, backbuttonListener } from './utils'
......@@ -37,6 +38,20 @@ export function initGlobalEvent() {
}
)
let keyboardHeightChange = 0
plusGlobalEvent.addEventListener(
'KeyboardHeightChange',
function (event: { height: number }) {
// 安卓设备首次获取高度为 0
if (keyboardHeightChange !== event.height) {
keyboardHeightChange = event.height
emit(ON_KEYBOARD_HEIGHT_CHANGE, {
height: keyboardHeightChange,
})
}
}
)
plusGlobalEvent.addEventListener('plusMessage', subscribePlusMessage)
// nvue webview post message
plusGlobalEvent.addEventListener('WebviewPostMessage', subscribePlusMessage)
......
......@@ -837,6 +837,7 @@ const ON_HIDE = 'onHide';
const ON_LAUNCH = 'onLaunch';
const ON_ERROR = 'onError';
const ON_THEME_CHANGE = 'onThemeChange';
const ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';
const ON_PAGE_NOT_FOUND = 'onPageNotFound';
const ON_UNHANDLE_REJECTION = 'onUnhandledRejection';
//Page
......@@ -964,6 +965,7 @@ exports.ON_APP_ENTER_FOREGROUND = ON_APP_ENTER_FOREGROUND;
exports.ON_BACK_PRESS = ON_BACK_PRESS;
exports.ON_ERROR = ON_ERROR;
exports.ON_HIDE = ON_HIDE;
exports.ON_KEYBOARD_HEIGHT_CHANGE = ON_KEYBOARD_HEIGHT_CHANGE;
exports.ON_LAUNCH = ON_LAUNCH;
exports.ON_LOAD = ON_LOAD;
exports.ON_NAVIGATION_BAR_BUTTON_TAP = ON_NAVIGATION_BAR_BUTTON_TAP;
......
......@@ -219,6 +219,8 @@ export declare const ON_ERROR = "onError";
export declare const ON_HIDE = "onHide";
export declare const ON_KEYBOARD_HEIGHT_CHANGE = "onKeyboardHeightChange";
export declare const ON_LAUNCH = "onLaunch";
export declare const ON_LOAD = "onLoad";
......
......@@ -833,6 +833,7 @@ const ON_HIDE = 'onHide';
const ON_LAUNCH = 'onLaunch';
const ON_ERROR = 'onError';
const ON_THEME_CHANGE = 'onThemeChange';
const ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';
const ON_PAGE_NOT_FOUND = 'onPageNotFound';
const ON_UNHANDLE_REJECTION = 'onUnhandledRejection';
//Page
......@@ -928,4 +929,4 @@ function getEnvLocale() {
return (lang && lang.replace(/[.:].*/, '')) || 'en';
}
export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CLASS, ATTR_STYLE, BACKGROUND_COLOR, BUILT_IN_TAGS, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, EventChannel, EventModifierFlags, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, PLUS_RE, PRIMARY_COLOR, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, addFont, cache, cacheStringFunction, callOptions, createRpx2Unit, debounce, decode, decodedQuery, defaultRpx2Unit, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getLen, initCustomDataset, invokeArrayFns, isBuiltInComponent, isCustomElement, isNativeTag, isServiceCustomElement, isServiceNativeTag, normalizeDataset, normalizeEventType, normalizeTarget, once, parseEventName, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, sanitise, scrollTo, stringifyQuery, updateElementStyle };
export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CLASS, ATTR_STYLE, BACKGROUND_COLOR, BUILT_IN_TAGS, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, EventChannel, EventModifierFlags, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, PLUS_RE, PRIMARY_COLOR, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, addFont, cache, cacheStringFunction, callOptions, createRpx2Unit, debounce, decode, decodedQuery, defaultRpx2Unit, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getLen, initCustomDataset, invokeArrayFns, isBuiltInComponent, isCustomElement, isNativeTag, isServiceCustomElement, isServiceNativeTag, normalizeDataset, normalizeEventType, normalizeTarget, once, parseEventName, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, sanitise, scrollTo, stringifyQuery, updateElementStyle };
......@@ -29,6 +29,7 @@ export const ON_HIDE = 'onHide'
export const ON_LAUNCH = 'onLaunch'
export const ON_ERROR = 'onError'
export const ON_THEME_CHANGE = 'onThemeChange'
export const ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange'
export const ON_PAGE_NOT_FOUND = 'onPageNotFound'
export const ON_UNHANDLE_REJECTION = 'onUnhandledRejection'
//Page
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册