how to exactly remove a screen component in react-navigation? - react-native

in the current top screen , I press a button which should pop the screen,
but BEFORE the press event is post to JS thread,
another screen is pushed to the nav stack,
so the pop operation is performed on the new coming screen,
it's wrong!!
but wait, why the press event in a below screen could produce if there's another one above it?
that's maybe the thread problem.
in JS thread the nav stack(a js object) has modified, but the real UIView change would wait until the call message reaching the UI thread. between this gap, the below screen had been pressed!
so, how could I ensure the pop should exactly pop itself??
btw, I have post the problem in theirs issuse

Related

React-native-navigation check if componentId exists before push

I am using react-native-navigation library to navigate through screens in my app, the problem is that if I navigate to a screen by pressing a button and press fast multiple times then that particular screen opens multiple times. My question is if it's there any possibility to check if a screen exists in the stack before pushing it, I wonder if exist any method or property from which I can get the stack with the components ids.
PS: I don't want to disable the button after first tap.
You can throttle the function where the button click event is handled. lodash.throttle can be used quite easily for this.

Pass through touch events on React Native

We built a React Native tablet kiosk app which displays multiple pages of input fields to a user at a front desk. The user has to fill out all the forms and can send them at the end.
Users can just walk away from the kiosk at any time, which would result in their last screen being the "welcome screen" for the next user. To avoid that, the app resets after some time if there was no user interaction (any touch event on the screen).
Right now, we use a countdown and reset it on each input field, button and background touch there is. This results in passing the reset callback to a lot of components. It works, but it is just a lot of redundancy and can lead to errors easily.
Is there any way, we can add an overlay to the very top of the view, which can catch all touch events and call the reset callback, but also pass the touch event to the views below? So when a user clicks on a button, the overlay calls the its callback but also the button is clicked (same for input fields, etc).
We also tried the Gesture Responder System, but could not get the touch event to pass through - it was always consumed by the component with the Gesture Responder System.
You can try adding a pointerEvents attribute to your View.

Preventing navigationview Back Button

Is there any way to prevent the default back button behavior in the navigation bar of a navigationview?
I'm trying to use Sencha Touch 2 history and linking abilities with routers, but that requires me to essentially intercept all button taps so that I can update the url.
The back button in a navigation bar creates all kinds of nightmares as far as thats concerned, and I can supply code if someone thinks they have an alternate solution, but preventing the default back button behavior seems best (so as to play nice with browser back button)
If you want to handle back button you can use back event of navigation view which fired when the back button of the navigation view was tapped.. Refer to my previous answer on how to do it.
If you want to completely hide the back button just simply use:
Ext.select('.x-button-back').hide();
try this Ext.getCmp('navigationview's id').getNavigatorBar().hide()

App crashes when tapped frequently

I am working on an app for iPad. In one class, I have used a scroll view at the bottom of the screen. This scroll view has some buttons. Those button play a video or open a PDF file. When user frequently taps on those button the app crashes. I have no idea why is it happening. Can any one please tell me why is it happening and how can I fix this crash?
Regards
PC
You should track the state of your view. Which button was pressed last, and don't allow it to be pressed again until.
a) it is done loading the pdf/video
and/or
b) another button has been pressed
You might have to be more strict than that, but we cannot help more than that at this point as Till mentions in your comments

How do I detect when modal title bar is done blinking with WndProc?

I have a VB.net MDI app that contains a modal window (normal window shown as modal). I have a custom title bar button that disappears if the user clicks outside the modal area.
Normally, clicking off a modal will cause the system to beep and then flash the title bar of the modal window.
I want to know how to detect when the flashing is complete (using WndProc if possible) so I can redraw the custom button.
Anyone know how this could be done? Thanks!
It's been a while, but I believe your window should be receiving a WM_NCPAINT message when the frame needs to repaint.
It turns out that I had the WndProc(m) line in the wrong spot.