Xamarin Image tap gestures are not always recognised - performance

so we are developing an app on cross-platform Xamarin. We are now testing it on Android on a few real devices, and we noticed that wherever we have an image with a Tap Gesture Recognizer the tap does not always work.
We tried increasing the section by increasing the image's size and decreasing the used part of the images, but we still have this issue. Its like some times it just doesn't work, even if you did tap on the image.
How can we fix this?
Edit
We updated to the last pre-release of Xamarin.Forms (2.5.0.121934) and it seems to be fixed. We are going to continue running tests to confirm.

Put a hotspot over it or behind it setting image's input to transparent. Hotspot can be whatever works best for you, transparent boxview, contentview etc. It's sometimes better to use hotspots as you can allow users to tap a bit around the image etc.

We updated to the last pre-release of Xamarin.Forms (2.5.0.121934) and it seems to be fixed.

Related

Oreo - View layout management has changed?

Don't flame me but prior to Oreo I used to put view in a static and keep it switching from fragments and it worked pretty well. In onCreate I simply check if the value of view is not null and in that case I was not inflating. It allowed me to do long task in a fragment in an async and switch to another fragment waiting for the async to complete.
It still works the same way with O except when I rotate the device. In that case I get a blank screen: no layout, no buttons, no text, etc.
I've read https://developer.android.com/about/versions/oreo/android-8.0-changes but didn't find anything.
Do you have an idea to fix this without changing it all?
From the way I understand it. if the Rotation is locked to portrait mode, rotating the device won't force it into landscape mode if portrait mode is locked.
Check out the following post:
android-p-feature-spotlight-rotation-can-temporarily-locked-landscape-changes
Just as annoying as Android Oreo, and unlike most OEM versions of Android I've used. There are new APIs for screen rotation in Android P so it's not clear whether apps need to implement it to be able to lock to landscape from the first go.
Also check out the Android P preview for more info regarding the rotation changes, for some reason it appears to be relevant for the Android Oreo as well.
Feature Overview
Behaviour Overview

WinJs: Ignore Font scaling from Windows

I've developed a WinJs app for the Surface pro 4. The app Runs in fullscreen and is layoutet with the screen resolution of 2736x1824 (surface resolution).
Now when i start the App on the surface the DPI scaling comes into play and messes up my Layout.
Is there a way to disable the scaling for the app?
I've tried:
Windows.UI.ViewManagement.ApplicationViewScaling.trySetDisableLayoutScaling(true);
but that doesn't seem to work.
Actually, making your app layout only for one resolution, especially for such a big resolution is not really great idea since the app can run on device with, for example 1920x1080 resolution where even with DPI scaling disabled your layout will be messed up.
So I recommend making the app layout responsive so it will look right on every resolution.
Not sure if you're still looking at this issue but I've found that the code that you see all over the place is actually XBox only (Link To Docs)
And the Microsoft Devs have been saying for a while that it's a user based setting and they don't plan on allowing you to ds(Forum Link)
You can detect the scaling value though with ResolutionScale (docsLink)
Windows.Graphics.Display.DisplayInformation.getForCurrentView().resolutionScale
Here's a link to a sample that detects it and adjusts.
So what you can do (and what I did) was where needed I used css scale to adjust the system to fit. Most of my app is responsive so it didn't matter, but if you use an iFrame and set it to be 1000px wide with this scale factor it will actually be 1400px or even 1800px wide and totally cut off..
I have listeners setup for the resize events and just adjust as needed.
Hope that helps!
-Dennis

iPhone 6(s) plus not scaling new application correctly for some users

I have a brand new Swift 2.0 XCode 7 Storyboard based application.
Target is set to 9.2. I'm currently supporting any device with GPS that can run ios 9.2
I started with the Tabbed View Template and I'm working in wAny and hAny and a single Storyboard.
It works fine in the simulator on a bunch of phones, both orientations and works fine on my 6s plus, 6s, 6 plus and a 5.
But for some users the scaling is wrong and everything comes out squished.
Even in landscape mode the TabBar Icons are very close to each other.
Narrower than even on my 6s plus in portrait.
I believe this is caused by my application not having a Launch bitmap.
My understanding is there are two ways to implement this.
Launcher .XIB/.NIB with half a dozen specific sized bitmaps attached. Or a StoryBoard Launcher with ... exactly what.
The "Or StoryBoard" is a little vague. But I wanted to keep things using the modern approach since this app is new and targeted users tend to have the latest device.
So I created my Launch Image set and tried to attached it to the UIImageView in the Launcher StoryBoard. It won't list items that are tagged as "Launcher Image Set". It will show other Image Sets and Icons. But not the ones specifically for Launcher. It shows an "L" in the xcassets list next to the Launcher Image set. I believe I have the build project setting set correctly and it looks perfect on many of the same exact devices.
After some digging, I read that if you use the "StoryBoard" method you don't need the 6 or so bitmaps anymore. You can put anything in the Storyboard Launcher View and treat it just like you would treat your main storyboard.
So I did that. I just centered a small image.png file in the View of the Launchers Storyboard. Works on all simulations and my iPhone 6s plus. I did not pin it to the edges because that would mess up the aspect ratio of the image.
A very small set of users still have the issue and one of them even uninstalled and reinstalled.
I tried playing with setting phone Zoomed, Normal, Text Size, Bold etc. They all work. Users also don't have anything out of the ordinary on these system settings.
So first, do I need the 6 proper sized bitmaps or not? I read conflicting info on this.
If I want to use the 6 images on a storyboard how to I get them in the UIImageView of the Launcher StoryBoard if they won't list? Should I put them in a regular image set. Does the "Launcher Image Set" only work for the for the Launcher.XIB?
If it's not the Launcher window, what else could it be causing this?
I know I could create a XIB/NIB with the 6 bitmaps. But that seems like I'm going backwards and I don't care about old OS versions or older phones.
I think I found my answer. When using a Storyboard Launcher you cannot use a "Launch Image Set" for your Launcher Storyboard. You have to use an Image Set.
This is the best Video I found that covers it A-Z.
https://www.youtube.com/watch?v=Vz6tCgXgZFo
It also didn't fix my initial problem. Which I'll post separately. It scales correct in Portrait but not in Landscape for hand full of users. Using the same hardware as others that it works fine on.

iPad incorrect rendering of Objects

We just set up a whole bunch of development MacBooks in our office. We all set up the computers exactly the same as far as I can tell (just installing xcode and not changing any settings). We even distributed the exact same xcode project to everyone to test whether or not everyone was set up correctly. For some reason though, my iPad simulator incorrectly renders the positions of Objects on the UIView controller.
I can make a really basic application and slap down a UIView controller with the storyboard editor in xcode 4.3.1 (newest version ATM), and add a button to it. When I run this on the simulator, it will look fine on the iPhone one, but when I try to view it in the iPad, it seems that some elements will scale to the iPad resolution fine, but others will not. The components that do not, seem to be in the place that they would be if they had been rendered on the iPhone.
The weirdest part of this problem is that I can't find anyone online who has had this same issue. I have already tried deleting and re-installing xcode and the same thing still happens. I fear I might have to re-install the OS and start from scratch.
How it looks on the iPhone simulator:
And on the iPad simulator:
I don't think that's an SDK issue, I bet that you are writing code that fits for the iPhone screen and not for the larger iPad screen.
I think that you added just the button and is Autoresizing Mask is not set properly.
I've done some measurement an it seems that:
The distance from the top of the view is in fixed (~360px);
The width is fixed (~260px);
You need to give the button a fixed distance from the bottom (as it should stay on under the plot) and remove the left fixed margin so it can be centered.
You need to take a look at the UIViewAutoresizingMask for the UIView's autoresizingMask property.
button.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

iphone 4 - Application doesn't show image?

I've had this app on app store with no problem until iphone 4 came out.
My home page has an image covering the whole screen.
UIImageView added in interface builder, and image path added in interface builder.
In all phones this image shows up; however, the image does not show up in any iphone 4, and instead the user sees a blank screen like the following:
Anybody knows what's causing this? thanks
.
I only have 1 set of images with
normal resolution
This problem only happens to one of
the images in my application which is
the background for my home page
the graphic file should not be
corrupted because the exact same
image works for all other iphones and
itouches
my image is a jpg file
image size is 480x270, which in
interface builder i make it 563x330 to display only a part of it
I have no outlet to this uiimageview
so it cannot be changed in code
With devices with the new retina display, pixel sizes are different and you have to check for the following, in particular:
Do you provide two alternatives of the image, one at old resolution, one at double resolution (named myimage.png and myimage#2x.png)
If not, does your image scale up well in size with CoreGraphics's algorithms (there are some pathological cases, though you'd have to be quite unlucky)?
Have you checked what happens (at both resolutions) when your UIImageView size changes?
Is it just one image, or all?
Is your graphics file corrupted?
It's hard to tell if it's any of these points, or something else, because you provide so damn little detail, that I stick to generic things. Comment below (or edit your question) if you need more help.
I've got two things to add to FXs thorough answer:
Considering the information you added, I would take a look at your code for setting up that UIImageView. Perhaps you use some sort of detection code or something which wasn't implemented correctly.
Would you mind sharing some code snippets?
According to Apple's documentation, you don't need to provide the ".png" extension as of iOS 4. Perhaps that is causing the problem.
Again, code snippets would help here. Specifically where you deal with loading up your image file.
EDIT:
Try re-saving the image and replacing it. I've occasionally corrupted files in Photoshop. This has to do with file extensions and how Mac OS ignores them, but Photoshop still uses them.
Also, it could have to do with where the image is in your XCode project. Check what Group it is in. Make sure everything is in place and then Clean and Rebuild. Remove the app from the iPhone4 (reboot) and try reinstalling.
I hope this helps.
Good luck!
If this was my code, I'd write a tiny app just to display the image in question. If it still fails it would be easier to get help debugging the problem.

Resources