-
Notifications
You must be signed in to change notification settings - Fork 24.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tap missed / taps ignored #15606
Comments
If anybody knows where in the RN system I could put debug logging to see if the underlying native layer is getting the events, that would be potentially helpful to know, so we can try to do some/any debugging about it. Update: Following the ideas from this https://stackoverflow.com/a/35619964/8168867 stack overflow post, I added iOS native level logging of events to our app. In the non-scrolling missing-taps case, I do see the iOS native level getting the events. So something about the RN level is utterly missing / ignoring / dropping those events. |
Update: So far, it appears that the ListView is eating up CPU time (or something) for a while even after scrolling has visibly stopped. We've experimented with various combinations of having and not-having ListViews and trying to repro, and it doesn't repro when the ListView is not in use. Whereas if we do have the ListView and scroll-and-stop and then tap, the fist tap or so is lost. The window of time that the first tap will be missed after scrolling appears to depend on the phone e.g. our iPhone6 seems to be faster / less likely to repro the issue / reduces the window of time after scrolling in which the bug manifests. Question: Does anybody know if there's anything we can do about this? Is there a way to get ListView to do less work after scrolling has visibly stopped? (ideally, not including switching to FlatList since we have done extensive attempts to use FL and they have all been much worse than using LV. In particular, the window of time after scrolling during which the taps are ignored is way worse in our experience with FL.) |
Question: why/how/are the iOS native level events not/going into a native level Q that the JS UI thread then reads from when it gets a chance? That would convert our problem of completely missing some events over into the other classic UX problem of a system that responds to events with lag. That probably would be better overall, though not ideal of course. Update: I hacked in some more NSLog()s and it appears that in the missed-tap-after-scroll case the iOS native code is calling "[_bridge enqueueJSCall:[[event class] moduleDotMethod] args:[event arguments]];" successfully. I don't know if that's the right place to be concerned with. I haven't dug deeper to see if "enqueueJSCall" is dropping the event before it gets to the JS side. Update 2, 3, 4, 5: I had some very red herring wild goose chase logging traces for a while. Simplifying our app, the two cases now look the same. Which leads me to think the event is ok in the iOS native layer, but is getting lost somehow on the JS side?? JS did not see this touch:
JS did see this touch:
|
Update/Tweak/Nuance/Wrinkle: We've actually repro'd on some iOS devices that it isn't a matter of timing, that no matter how long one waits after scrolling the ListView, the first tap is missed in JS. |
Do you have any progress here ? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions. |
Facing same issue as well with react-native |
The root of the issue can possibly be read here - negativetwelve/react-native-ux-cam#36 |
@Cool04ek I can also confirm that by changing the delegate method in
By examining the git history of this class, I can see that this method was added by @shergin with commit c68a708. Prior to this, the class always returned NO (though w/o a delegate impl). @shergin could you look into this and propose a proper way to fix this issue? I can provide a test project which demonstrates this behavior. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions. |
Is this a bug report?
Yes, this is a bug report.
Have you read the Contributing Guidelines?
Yes, I have read it.
Environment
react-native -v
: react-native-cli: 2.0.1 react-native: 0.46.4node -v
: v6.11.1npm -v
: 5.3.0yarn --version
: 0.27.5Then, specify:
iOS and Android
Mac OS X 10.12.6
For iOS release we are building via Xcode / Archive / upload to TestFlight. See down below for package.json.
Steps to Reproduce
With our app's iOS release builds (unclear/untested if it also happens with Android) we are seeing taps on the screen get utterly ignored some times. The 2 main scenarios we reproduce are
there's a harder to repro case where the user scrolls the list some, and then stops the scrolling, and then taps on another component on-screen, and the first tap is ignored/lost/missed/not seen.
more 100% reproducible, while our ListView is scrolling, other things on the screen do not respond to taps. (We have tried using FlatList and for various reasons it is not an acceptable component for us to use, so we're using ListView.)
Expected Behavior
taps should always work and never be missed/lost/ignored.
Actual Behavior
It appears that RN is missing input events. Note that we are not talking about a delay. We are talking about events never being "seen" by the RN system.
The text was updated successfully, but these errors were encountered: