diff --git a/packages/frontend/apps/ios/src/app.tsx b/packages/frontend/apps/ios/src/app.tsx index c98100961..327871da6 100644 --- a/packages/frontend/apps/ios/src/app.tsx +++ b/packages/frontend/apps/ios/src/app.tsx @@ -1,6 +1,7 @@ import { AffineContext } from '@affine/core/components/context'; import { AppContainer } from '@affine/core/desktop/components/app-container'; import { configureMobileModules } from '@affine/core/mobile/modules'; +import { VirtualKeyboardProvider } from '@affine/core/mobile/modules/virtual-keyboard'; import { router } from '@affine/core/mobile/router'; import { configureCommonModules } from '@affine/core/modules'; import { @@ -20,6 +21,7 @@ import { } from '@affine/core/modules/workspace-engine'; import { App as CapacitorApp } from '@capacitor/app'; import { Browser } from '@capacitor/browser'; +import { Keyboard } from '@capacitor/keyboard'; import { Framework, FrameworkRoot, @@ -76,6 +78,14 @@ framework.impl(ValidatorProvider, { return res.value; }, }); +framework.impl(VirtualKeyboardProvider, { + addEventListener: (event, callback) => { + Keyboard.addListener(event as any, callback as any); + }, + removeAllListeners: () => { + Keyboard.removeAllListeners(); + }, +}); const frameworkProvider = framework.provider(); // setup application lifecycle events, and emit application start event diff --git a/packages/frontend/core/src/mobile/components/app-tabs/index.tsx b/packages/frontend/core/src/mobile/components/app-tabs/index.tsx index dcc37b61c..9e3507f81 100644 --- a/packages/frontend/core/src/mobile/components/app-tabs/index.tsx +++ b/packages/frontend/core/src/mobile/components/app-tabs/index.tsx @@ -9,6 +9,7 @@ import { assignInlineVars } from '@vanilla-extract/dynamic'; import React from 'react'; import type { Location } from 'react-router-dom'; +import { VirtualKeyboardService } from '../../modules/virtual-keyboard/services/virtual-keyboard'; import { AppTabJournal } from './journal'; import * as styles from './styles.css'; @@ -54,14 +55,20 @@ const routes: Route[] = [ ]; export const AppTabs = ({ background }: { background?: string }) => { + const virtualKeyboardService = useService(VirtualKeyboardService); + const virtualKeyboardVisible = useLiveData(virtualKeyboardService.show$); + return (