react-native icon indicating copy to clipboard operation
react-native copied to clipboard

[InputAccessoryView] Can't specify keyboard-conditional bottom padding

Open Ashoat opened this issue 7 years ago • 21 comments

Environment

React Native Environment Info:
  System:
    OS: macOS High Sierra 10.13.5
    CPU: x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
    Memory: 25.07 MB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 9.3.0 - ~/.nvm/versions/node/v9.3.0/bin/node
    Yarn: 1.6.0 - /usr/local/bin/yarn
    npm: 6.1.0 - ~/.nvm/versions/node/v9.3.0/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
    Android SDK:
      Build Tools: 23.0.1, 25.0.0, 25.0.1, 25.0.2, 25.0.3, 26.0.1, 26.0.2, 26.0.3, 27.0.3
      API Levels: 23, 25, 26
  IDEs:
    Android Studio: 3.1 AI-173.4819257
    Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.4.1 => 16.4.1
    react-native: ^0.56.0 => 0.56.0

Description

If you have a bottom tab bar, you want the InputAccessoryView to appear above it when the keyboard is collapsed. However, when the keyboard is expanded, you want the InputAccessoryView to appear directly above the keyboard.

This sort of "conditional" bottom padding is currently impossible with InputAccessoryView. It seems that when the keyboard is expanded, the distance between the bottom of the screen and the InputAccessoryView is fixed. Attempting to change this distance with height, padding, or margin style properties does not seem possible.

Reproducible Demo

I've created a minimal repro here.

Ashoat avatar Jul 11 '18 19:07 Ashoat

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as "For Discussion" or "Good first issue" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Dec 16 '18 13:12 stale[bot]

@cpojer What is the status on this? Does the linked issue being closed indicate that this has been resolved?

jakebloom avatar Mar 25 '19 16:03 jakebloom

No, it seems like this issue still exists. Please feel free to send a Pull Request with a fix.

cpojer avatar Mar 25 '19 16:03 cpojer

Until there is a fix, is there any workaround?

digitalbreed avatar Mar 30 '19 20:03 digitalbreed

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Aug 04 '19 19:08 stale[bot]

I'm also looking for a solution to this problem. I want an input and button sat at the bottom of my screen (on top of the tab bar) and when the input is in focus, the keyboard slides up and those elements slide up with it. The focused position works as expected but when the keyboard is collapsed, the input and button completely cover the tab bar.

Are there any workarounds for this while we're hoping for a proper solution? Did you have any luck, @digitalbreed / @Ashoat?

darrylyoung avatar Sep 23 '19 11:09 darrylyoung

No, no solutions exist to my knowledge. You can avoid using KeyboardAccessoryView altogether, but that means you can’t pan the keyboard up/down... just press to open/close.

I’ve seen this non-React-Native solution, but it seems hard to port to React Native, and feels a little hacky.

Ashoat avatar Sep 23 '19 13:09 Ashoat

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Dec 22 '19 14:12 stale[bot]

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Mar 21 '20 16:03 stale[bot]

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Jun 20 '20 17:06 stale[bot]

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as a "Discussion" or add it to the "Backlog" and I will leave it open. Thank you for your contributions.

stale[bot] avatar Sep 20 '20 03:09 stale[bot]

I can confirm that this is still technically a current bug in React Native 0.63.3 and iOS 14.1. However after much consideration of this issue I have come to the conclusion that fixing this issue would like not provide a desierable UX design in most cases anyway. My app also uses a bottom tab bar, but after mocking out what my UI would like like with a bottom tab bar, open keryboard, and an InputAccessory I realised it would actually look very weird. In fact I looked through a number of popular apps that leverage an InputAccessoryView, (Facebook's create post screen is a common one) and in every case the screen that uses the InputAccessoryView is always a modal view that displays over the entire screen and hides the bottom tab bar. I assume that this is likely because displaying a bottom tab bar and an input accessory provides for a very confusing and clunky user expereince.

jamesxabregas avatar Nov 23 '20 03:11 jamesxabregas

https://reactnative.dev/docs/keyboard you can add listeners and hide tabbar if keyboard is active

gitVera avatar Feb 02 '22 11:02 gitVera

This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days.

github-actions[bot] avatar Mar 03 '23 01:03 github-actions[bot]

Not stale

Ashoat avatar Mar 03 '23 20:03 Ashoat

Still happening

lucianobracco-geojam avatar May 04 '23 13:05 lucianobracco-geojam

Still having issues with this

MarcusDelvecchio avatar Oct 30 '23 23:10 MarcusDelvecchio

@Ashoat Maybe it's doable with https://github.com/kirillzyusko/react-native-keyboard-controller and KeyboardStickyView component?

You can specify offset property for closed/opened state and it should work as expected 👀 It also support interactive keyboard dismissal so I think worth to try it out!

kirillzyusko avatar Jan 11 '24 18:01 kirillzyusko

Looks super cool!! Will take a look at it when I get a chance. Thanks for sharing @kirillzyusko!

Ashoat avatar Jan 11 '24 18:01 Ashoat

This has the downside of not supporting interactive dismissal starting at the component, see the issue here: https://github.com/kirillzyusko/react-native-keyboard-controller/issues/250

As it stands, you need to choose between having interactive dismiss or being able to set the position of the inputaccessoryview

mozzius avatar May 04 '24 22:05 mozzius

This has the downside of not supporting interactive dismissal starting at the component, see the issue here: https://github.com/kirillzyusko/react-native-keyboard-controller/issues/250

As it stands, you need to choose between having interactive dismiss or being able to set the position of the inputaccessoryview

Yeah, I'm planning to fix this problem in the near future 👀

kirillzyusko avatar May 06 '24 08:05 kirillzyusko