Notice (2018-05-24): bugzilla.xamarin.com is now in
Please join us on
Visual Studio Developer Community and in the
Mono organizations on
GitHub to continue tracking issues. Bugzilla will remain
available for reference in read-only mode. We will continue to work
on open Bugzilla bugs, copy them to the new locations
as needed for follow-up, and add the new items under Related
Our sincere thanks to everyone who has contributed on this bug
tracker over the years. Thanks also for your understanding as we
make these adjustments and improvements for the future.
Please create a new report on
Developer Community or GitHub with
your current version information, steps to reproduce, and relevant error
messages or log files if you are hitting an issue that looks similar to
this resolved bug and you do not yet see a matching new report.
I have a MPVolumeView control on my AVAsset player. The MPVolumeView always responds to the iPhone's volume up/down buttons as expected, but the problem is that it does not always respond to a finger touch.
This is the only way that I can get the MPVolumeView to respond to a touch on startup:
1. Use the phone's volume buttons to max out the volume in one run of the app.
2. Exit the app and don't change the phone's volume.
3. Start the app again.
4. The slider responds to the user's first touch. However, once the finger is lifted at a point below about 0.95, the slider does not respond to touches anymore. From then on, it responds just to the phone's up/down buttons.
It does not seem to matter what the design-time "Current" value of the slider is. I have tried 0, 0.5, and 1 in a min/max range of 0 to 1. The phone's volume being maxed out at startup decides the success of the first touch.
If the user clicks the volume up button until the volume maxes out, the slider will respond to the user's touch just once, until the finger is lifted below about 0.95. This cycle of button to max out and finger to slide once can be repeated indefinitely.
This is the only scenario I have found which allows back-to-back touches:
1. Max out the volume with the phone's volume button.
2. Slide the thumb to the left to whatever value but then slide it back up to at least about 0.95 before lifting your finger.
3. Touch down on the thumb again and the slider will respond to the touch.
4. If you slide the thumb and lift your finger up at, say, about 0.5, the thumb doesn't respond to touches again. The only way to reset is to max out the volume again with the button.
The only phone I have tried this on is an iPhone 4S running iOS 7.1.2.
At first sight this doesn't sound like a bug in Xamarin.iOS, but instead something in iOS itself.
However can you attach a complete test solution so that we can test it as well?
This can be closed. I started to make a test project but then went back to my app. I added a new UIView to the XIB and overrode it to be MPVolumeView, and deleted my old MPVolumeView. Everything is working correctly.
My old XIB must have been in an invalid state that was a mixture of UISlider (the class that I originally used when I wasn't responding to the device's volume settings) and MPVolumeView. I expected the custom class override to be more authoritative than it was. Now that I started fresh with UIView and didn't involve UISlider, it's working as expected.
<slider opaque="NO" contentMode= … " customClass="MPVolumeView">
<view contentMode= … “ customClass="MPVolumeView">
The "Slider" and "Control" sections of the MPVolumeView in the Attributes Inspector are gone and just the vanilla "View" section is displayed. Interesting lesson.