Bug 33372 - Pull-to-refresh indicator displays as a complete circle on iOS if only partially activated prior to switching tabs
Summary: Pull-to-refresh indicator displays as a complete circle on iOS if only partia...
Status: RESOLVED ANSWERED
Alias: None
Product: Forms
Classification: Xamarin
Component: iOS ()
Version: 1.4.4
Hardware: Macintosh Mac OS
: Normal minor
Target Milestone: ---
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2015-08-25 15:16 UTC by Eric Schmitz
Modified: 2015-09-05 17:44 UTC (History)
5 users (show)

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


Attachments
App code for Forms project. (2.82 KB, application/octet-stream)
2015-08-25 15:16 UTC, Eric Schmitz
Details
Reproduction project (using prior attachment's code) (181.82 KB, application/zip)
2015-09-04 12:33 UTC, Paul DiPietro [MSFT]
Details


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:
Status:
RESOLVED ANSWERED

Description Eric Schmitz 2015-08-25 15:16:05 UTC
Created attachment 12636 [details]
App code for Forms project.

The activity spinner in the Forms ListView does not animate properly after switching to and from another tab in a TabbedPage project.

When navigating back from another tab, the ListView activity indicator will appear immediately and fully round when pulling the ListView down (instead of gradually filling while pulling).

Sample code attached.  When running the code, the second tab page may have to be navigated to more than once for the problem to begin.
Comment 1 Paul DiPietro [MSFT] 2015-09-04 12:31:28 UTC
This is occurring on iOS using Forms 1.5.0.6404-pre3 (and 1.4.4.6392), but not precisely as you're describing. In iOS, the issue appears to be 100% reproducible by doing the following:

1) On the initial page with the ListView, begin the pull-to-refresh action, but only pull on the ListView enough that the refresh action does not initiate (e.g. 3-5 bars show).
2) Navigate to the second tab.
3) Navigate back to the first tab, and any intention to pull-to-refresh shows the full indicator displays the complete indicator immediately. You can reset this by actually completing the pull-to-refresh action.

It does not appear to occur on Android; WP not tested.
Comment 2 Paul DiPietro [MSFT] 2015-09-04 12:33:47 UTC
Created attachment 12756 [details]
Reproduction project (using prior attachment's code)
Comment 3 Paul DiPietro [MSFT] 2015-09-05 11:12:44 UTC
I have actually looked into this further (just as I was trying to use my phone, the idea came to me to test it with ObjC-written apps) and it seems to be an iOS-specific behavior. You can reproduce it not just by using tabs, but navigation transitions as well.

For instance, in the iOS Mail app, if you go to the inbox and perform the same partial pull-to-refresh as described before, go back to the list of various categories (inbox, archive, spam, etc.), then back into the inbox and start the pull-to-refresh, it will show the entire icon as described in the prior comments. Because of the nature of this behavior, it is not specific to Forms.
Comment 4 Eric Schmitz 2015-09-05 17:44:13 UTC
Perhaps not specific to XF, but the way it is implemented in XF.  Obviously cannot release this as-is to my users.

For now I am implementing a work-around as follows in the Page.Disappearing event:
lv.InRefreshing = true;
lv.IsRefreshing = false;