Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Linq;
- using UIKit;
- using Xamarin.Forms;
- [assembly: ExportRenderer(typeof(Page), typeof(MyApp.iOS.Renderers.PageRenderer))]
- namespace MyApp.iOS.Renderers
- {
- public class PageRenderer : Xamarin.Forms.Platform.iOS.PageRenderer
- {
- public override void ViewDidLoad()
- {
- base.ViewDidLoad();
- if (NativeView == null) return;
- var existingRecognizer = NativeView.GestureRecognizers.OfType<UITapGestureRecognizer>().FirstOrDefault();
- if (existingRecognizer != null)
- {
- NativeView.RemoveGestureRecognizer(existingRecognizer);
- var uiTapGestureRecognizer = new UITapGestureRecognizer(a => NativeView?.EndEditing(true));
- uiTapGestureRecognizer.ShouldRecognizeSimultaneously = (recognizer, gestureRecognizer) => true;
- uiTapGestureRecognizer.ShouldReceiveTouch = OnShouldReceiveTouch;
- uiTapGestureRecognizer.DelaysTouchesBegan = uiTapGestureRecognizer.DelaysTouchesEnded = uiTapGestureRecognizer.CancelsTouchesInView = false;
- NativeView.AddGestureRecognizer(uiTapGestureRecognizer);
- }
- }
- bool OnShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
- {
- foreach (UIView v in ViewAndSuperviewsOfView(touch.View))
- {
- if (v is UITableView || v is UITableViewCell || v.CanBecomeFirstResponder)
- return false;
- }
- return true;
- }
- IEnumerable<UIView> ViewAndSuperviewsOfView(UIView view)
- {
- while (view != null)
- {
- yield return view;
- view = view.Superview;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement