diff options
author | adrianknight89 <adrianknight89@outlook.com> | 2017-01-09 04:53:15 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2017-01-09 10:53:15 +0000 |
commit | a0417309b8dce62dacce1a5519d6de47533b8802 (patch) | |
tree | c4d98ed22f030f73c9c4320f61d51a752e5893b5 /Xamarin.Forms.Platform.iOS | |
parent | c8d54e69ce047b97fdc21afcdad68644ccb1be7a (diff) | |
download | xamarin-forms-a0417309b8dce62dacce1a5519d6de47533b8802.tar.gz xamarin-forms-a0417309b8dce62dacce1a5519d6de47533b8802.tar.bz2 xamarin-forms-a0417309b8dce62dacce1a5519d6de47533b8802.zip |
[iOS] Register effects for ScrollView and WebView (#641)
* fix effects
* move effect utilities to core
* use core class
* move to internals namespace
* remove IEffectControlProvider from IVisualElementRenderer
Diffstat (limited to 'Xamarin.Forms.Platform.iOS')
9 files changed, 36 insertions, 17 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs index f1364de7..d84dd740 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs @@ -382,5 +382,10 @@ namespace Xamarin.Forms.Platform.iOS Subviews[0].Frame = new RectangleF(0, 0, (float)Element.Width, (float)Element.Height); } } + + public void RegisterEffect(Effect effect) + { + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index 55e39ada..6af40216 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -978,9 +978,7 @@ namespace Xamarin.Forms.Platform.iOS void IEffectControlProvider.RegisterEffect(Effect effect) { - var platformEffect = effect as PlatformEffect; - if (platformEffect != null) - platformEffect.Container = View; + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs index e2455d78..1c7730e8 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs @@ -23,9 +23,7 @@ namespace Xamarin.Forms.Platform.iOS void IEffectControlProvider.RegisterEffect(Effect effect) { - var platformEffect = effect as PlatformEffect; - if (platformEffect != null) - platformEffect.Container = View; + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); } public VisualElement Element { get; private set; } diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs index 501312cd..b26e3148 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs @@ -401,9 +401,7 @@ namespace Xamarin.Forms.Platform.iOS void IEffectControlProvider.RegisterEffect(Effect effect) { - var platformEffect = effect as PlatformEffect; - if (platformEffect != null) - platformEffect.Container = View; + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs index 3d38bb6b..c9c24ad6 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs @@ -6,7 +6,7 @@ using RectangleF = CoreGraphics.CGRect; namespace Xamarin.Forms.Platform.iOS { - public class ScrollViewRenderer : UIScrollView, IVisualElementRenderer + public class ScrollViewRenderer : UIScrollView, IVisualElementRenderer, IEffectControlProvider { EventTracker _events; KeyboardInsetTracker _insetTracker; @@ -88,6 +88,8 @@ namespace Xamarin.Forms.Platform.iOS OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); + EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); + if (element != null) element.SendViewInitialized(this); @@ -234,5 +236,10 @@ namespace Xamarin.Forms.Platform.iOS if (ScrollView != null) Controller.SetScrolledPosition(ContentOffset.X, ContentOffset.Y); } + + void IEffectControlProvider.RegisterEffect(Effect effect) + { + VisualElementRenderer<VisualElement>.RegisterEffect(effect, this, NativeView); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs index f0aa7c7f..27492768 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs @@ -375,9 +375,7 @@ namespace Xamarin.Forms.Platform.iOS void IEffectControlProvider.RegisterEffect(Effect effect) { - var platformEffect = effect as PlatformEffect; - if (platformEffect != null) - platformEffect.Container = View; + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); } void SetTabBarItem(IVisualElementRenderer renderer) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs index 9f0dff00..fd03d468 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs @@ -388,9 +388,7 @@ namespace Xamarin.Forms.Platform.iOS void IEffectControlProvider.RegisterEffect(Effect effect) { - var platformEffect = effect as PlatformEffect; - if (platformEffect != null) - platformEffect.Container = View; + VisualElementRenderer<VisualElement>.RegisterEffect(effect, View); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs index 70c9bf60..390e16d2 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs @@ -7,7 +7,7 @@ using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.iOS { - public class WebViewRenderer : UIWebView, IVisualElementRenderer, IWebViewDelegate + public class WebViewRenderer : UIWebView, IVisualElementRenderer, IWebViewDelegate, IEffectControlProvider { EventTracker _events; bool _ignoreSourceChanges; @@ -55,6 +55,8 @@ namespace Xamarin.Forms.Platform.iOS OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); + EffectUtilities.RegisterEffectControlProvider(this, oldElement, element); + if (Element != null && !string.IsNullOrEmpty(Element.AutomationId)) AccessibilityIdentifier = Element.AutomationId; @@ -260,5 +262,10 @@ namespace Xamarin.Forms.Platform.iOS } #endregion + + void IEffectControlProvider.RegisterEffect(Effect effect) + { + VisualElementRenderer<VisualElement>.RegisterEffect(effect, this, NativeView); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs b/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs index bb971858..155f8b60 100644 --- a/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/VisualElementRenderer.cs @@ -73,6 +73,16 @@ namespace Xamarin.Forms.Platform.iOS } } + public static void RegisterEffect(Effect effect, UIView container, UIView control = null) + { + var platformEffect = effect as PlatformEffect; + if (platformEffect == null) + return; + + platformEffect.Container = container; + platformEffect.Control = control; + } + void IEffectControlProvider.RegisterEffect(Effect effect) { var platformEffect = effect as PlatformEffect; |