Custom keyboards (swiftkey) +iOS + BottomFrameBackground / ClientPanel

The BottomFrameBackground is said to take care of readjusting UI when on-screen keyboard appears and disappears. And it actually does so, but only with the default keyboard.

If you have, for example, Swiftkey installed on iOS, then it doesn’t really work; apparently Fuse isn’t aware of what space the custom keybord takes up, thus it cannot scale/move the other elements.

Tested with this code:

<App Theme="Basic" Background="#eeeeeeff">
    <ClientPanel>
        <DockPanel>

            <Panel Dock="Top" Height="100">
                <Text Alignment="Center">this is at the top</Text>
            </Panel>

            <ScrollView>
                <StackPanel>
                    <Panel Height="100" Background="#aaa">
                        <Text>scrollview contents 1</Text>
                    </Panel>
                    <Panel Height="100" Background="#bbb">
                        <Text>scrollview contents 2</Text>
                    </Panel>
                    <Panel Height="100" Background="#aaa">
                        <Text>scrollview contents 3</Text>
                    </Panel>
                    <Panel Height="100" Background="#bbb">
                        <Text>scrollview contents 4</Text>
                    </Panel>
                    <Panel Height="100" Background="#aaa">
                        <Text>scrollview contents 5</Text>
                    </Panel>
                    <Panel Height="100" Background="#bbb">
                        <Text>scrollview contents 6</Text>
                    </Panel>
                    <Panel  Height="100" Background="#aaa" ux:Name="last">
                        <Text>scrollview contents 7</Text>
                    </Panel>
                </StackPanel>
            </ScrollView>

            <Panel Dock="Bottom" Height="100">
                <Panel>
                    <TextInput Value="text" Background="#999" Height="50">
                        <WhileFocused>
                            <BringIntoView TargetNode="last" />
                        </WhileFocused>
                    </TextInput>
                </Panel>
            </Panel>

        </DockPanel>
    </ClientPanel>
</App>

Default iOS keybord shows the expected behavior - ScrollView scrolls to the last Panel as instructed by WhileFocused and resizes itself when keyboard appears. Also the TextInput moves up with its parent Panel.

However, when Swiftkey is active, the ScrollView actually scrolls as instructed by WhileFocused, but it does not resize to accomodate the keybord size. The TextInput still moves up with its parent Panel.

Thanks for the error report. I’ve created an internal issue and someone will investigate it shortly!

Follow-up: I have noticed on several Android devices that even when using the default keyboard, its size also isn’t taken into account. When the keyboard pops up, the ScrollView is not resized to accomodate new available space.

Same code on iOS with default keyboard functions correctly.

Seems to not be isolated to custom keyboards or iOS only.

Heads up! With Fuse 0.11.0.6149, I was able to get the expected behavior, when ditching the <WhileFocused> trigger and instead using a <WhileKeyboardVisible> in the enclosing DockPanel.

Might be not an issue with calculating the height, but instead when WhileFocused fires. And, as such, my mistake in understanding how Fuse works.