Bug 26851 - MPVolumeView doesn't consistently respond to touches
Summary: MPVolumeView doesn't consistently respond to touches
Alias: None
Product: iOS
Classification: Xamarin
Component: XI runtime ()
Version: XI 8.6.0
Hardware: Macintosh Mac OS
: Normal normal
Target Milestone: Untriaged
Assignee: Bugzilla
Depends on:
Reported: 2015-02-09 01:38 UTC by Gary
Modified: 2015-02-09 20:48 UTC (History)
3 users (show)

Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and 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 Links.

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.

Related Links:

Description Gary 2015-02-09 01:38:32 UTC
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.
Comment 1 Rolf Bjarne Kvinge [MSFT] 2015-02-09 04:20:22 UTC
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?
Comment 2 Gary 2015-02-09 20:48:50 UTC
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.

Old XIB:
<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.