Before upgrading to React Native Web v0.13 a TouchableOpacity inside a View with PanResponder didn't trigger the onPress. In v0.13 it now get's triggered with the same setup. How can I make the onPress not fire, when PanResponder handles the event?
See my simple example at https://codesandbox.io/s/stoic-wu-u0utn
The red rectangle is a TouchableOpacity which logs every time you press it. The outer blue rectangle is draggable. When dragging the red part, how can I make the onPress not to trigger? Change the version of React Native Web to 0.12.3 and see that it now works as expected.
(In my real app, this is a swipable list where you can both press and slide an item.)
This was fixed in in release 0.14.6, see https://github.com/necolas/react-native-web/commit/d2e6c29e259856b81d0466217754c1107a44f014
Related
I use SkiaSharp canvas to draw the main game screen, and then there are various Xamarin.Forms Buttons around the UI. This all works fine on when used directly on iPhone or iPad using a finger. However, when I connect a mouse (e.g., through a MacBook or otherwise), the buttons start working with about 10% chance after mouse-clicking on the SkiaSharp canvas (and not receiving the mouse click events with 90% chance). The SkiaSharp canvas itself works just fine.
If I bring up the iOS app launch menu from the bottom (which probably somehow temporarily exists the mouse navigation on the app), the buttons start working again with the mouse. But if I click the SkiaSharp canvas again with the mouse, the buttons have a high chance of becoming disabled again. If I change to using a finger, all works fine (even if the mouse clicks were not being registered immediately before). However, mouse clicks are not being registered even after touching with a finger, so finger-touching does not reset the issue with the mouse (but bringing up the menu from the bottom does).
We found this bug by testing the iOS game on MacBook Pro (the iOS apps recently came available on the App Store) but the same issue persists also directly with an iPad / mouse combination. It seems to be some sort of an issue between using a mouse (on iPad or on MacBook Pro), SkiaSharp canvas and Xamarin.Forms buttons.
Does anyone know what the root cause of the problem is and what is the workaround?
Not an answer as such, but some more information about reproducing the issue: A simpler repro case may be this small project: https://github.com/jrc14/TraceMatching/ .
Don't worry too much about what it's doing, but note that you're mean to click in the grey Skia canvas in the middle to create 'targets' - and that after you've done that, mouse-clicks are getting lost.
If you run it on a Mac, you'll see that, though the clicks get lost after you've clicked on the Skia canvas, they will start being received again if you click on something else (another app, or the Mac background).
(further edit) - after some noodling around I did find a workaround. If, once you've finished processing the touch action on the SKCanvasView, you reset its EnableTouchEvents property (i.e. set it to false, then back to true again), it seems that the clicks don't get lost any more,
I have a SearchBar component and a ListView component. When I tap the search bar, the keyboard comes up but it stays up even if the user decides to scroll ListView under it. I can't seem to find either
1) any event on the ListView that I can trigger the search bar to close on when it's scrolling
--or--
2) any event on the search bar that I can check to see if it's not focused , then close it.
Either of those would be sufficient but I can't seem to find any in the documentation.
Both components are independent of each other, you must call dismissSoftInput() on the search bar upon scroll.
Unfortunately the scroll event is not supported out of the box while using ListView. There is an open feature request on Github, which also discusses how you may implement this event with an override & bit of native code in your project. You may also consider using RadListView, supports scroll events out of the box.
Problem
Using react native web, I am trying to allow for drag to work over a touchable opacity. This will allow mobile users to scroll by dragging over the touchable opacity.
Attempts
Since there are two touchable opacities within a single view, I have been trying to fix it for the view (parent) so that it works for the whole section. So, within the view tag, I have tried handles like: onResponderRelease, onResponderStart, onStartShouldSetResponder, onStartShouldSetResponderCapture, and a few others in an attempt to find something that works, as it seems those handles would fix issues for react native. I have assigned them to false and true, however none of those fixed my issue.
Question
How can I allow components to maintain their ability to be clicked, while also allowing users to click and drag (scroll on mobile)? Thanks for any help!
I have implemented Twilio voice kit successfully in the application.
I am not able to move in the application from call indicator. Also, I am not able to see green bar on other application screen when user moves from call screen. I have added custom view in navigation bar, but it's not much responsive.
I have following doubts for the same.
Is there any default property which I need to enable to display
native call indicator in the application?
Do I need to put a custom
view as I have done? If yes then what will be the best approach to do
it?
Is there any alternative to display custom call indicator inside
the application rather than adding view in navigation bar?
Any help will be appreciated.
Thank you.
As far as I know, CallKit framework does not have any API for you to use to display their native UI regarding the calls. The green indicator bar is shown if you have an active VoIP call and your app is running in background.
By tapping on it it will just open your VoIP app.
The best approach is to use a custom-built UIView, placed on a separate UIWindow that has the same level as the system's status bar and add a tap gesture on it to achieve what the native green bar is doing. Also, you can even add the animation that fades in and out a label to create the same experience as the native green bar.
I need to scroll to top the main Interface Controller of an Apple Watch app programmatically after each launch specially if users has left the app after scrolling it down.
EDIT:
This is now possible in watchOS 4. Just use the scrollToObject:atScrollPosition:animated: method.
Unfortunately, this isn't currently possible. WatchKit only provides a method to scroll to the top of a WKInterfaceTable, not an entire interface controller.
The only workaround I've found is to hide every element in the interface controller. This doesn't just hide the element, it completely removes it from the controller. Then when you unhide everything, you'll be back at the top of your content.