Skip to content

Commit f23a080

Browse files
authored
Merge pull request #37 from Redth/fix-ios-refreshenabled
Fix iOS ignoring IsRefreshEnabled
2 parents 9e51234 + 29fc07e commit f23a080

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

Sample/VirtualListViewSample/SectionedAdapterPage.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
<vlv:VirtualListView
1111
Grid.Row="0"
1212
Grid.Column="0" Grid.ColumnSpan="3"
13+
IsRefreshEnabled="False"
14+
OnRefresh="Vlv_OnOnRefresh"
1315
x:Name="vlv"
1416
OnSelectedItemsChanged="vlv_SelectedItemsChanged"
1517
SelectionMode="Single">

Sample/VirtualListViewSample/SectionedAdapterPage.xaml.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,10 @@ private void vlv_SelectedItemsChanged(object sender, SelectedItemsChangedEventAr
4747
}
4848

4949
}
50+
51+
private async void Vlv_OnOnRefresh(object sender, RefreshEventArgs e)
52+
{
53+
await Task.Delay(3000);
54+
e.Complete();
55+
}
5056
}

VirtualListView/Apple/VirtualListViewHandler.ios.maccatalyst.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,21 @@ protected override UICollectionView CreatePlatformView()
3636

3737

3838
refreshControl = new UIRefreshControl();
39+
refreshControl.Enabled = VirtualView?.IsRefreshEnabled ?? false;
3940
refreshControl.AddTarget(new EventHandler((s, a) =>
4041
{
4142
refreshControl.BeginRefreshing();
42-
VirtualView?.Refresh(() => refreshControl.EndRefreshing());
43+
try
44+
{
45+
VirtualView?.Refresh(() => refreshControl.EndRefreshing());
46+
}
47+
catch
48+
{
49+
refreshControl.EndRefreshing();
50+
}
4351
}), UIControlEvent.ValueChanged);
4452

45-
collectionView.AddSubview(refreshControl);
53+
//collectionView.AddSubview(refreshControl);
4654

4755
collectionView.AlwaysBounceVertical = true;
4856

@@ -175,8 +183,20 @@ public static void MapRefreshAccentColor(VirtualListViewHandler handler, IVirtua
175183

176184
public static void MapIsRefreshEnabled(VirtualListViewHandler handler, IVirtualListView virtualListView)
177185
{
186+
var isRefreshEnabled = virtualListView?.IsRefreshEnabled ?? false;
178187
if (handler.refreshControl is not null)
179-
handler.refreshControl.Enabled = virtualListView.IsRefreshEnabled;
188+
{
189+
if (isRefreshEnabled)
190+
{
191+
handler.PlatformView.AddSubview(handler.refreshControl);
192+
handler.refreshControl.Enabled = true;
193+
}
194+
else
195+
{
196+
handler.refreshControl.Enabled = false;
197+
handler.refreshControl.RemoveFromSuperview();
198+
}
199+
}
180200
}
181201

182202

0 commit comments

Comments
 (0)