Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using UIKit;
  4. using Xamarin.Forms;
  5.  
  6. [assembly: ExportRenderer(typeof(Page), typeof(MyApp.iOS.Renderers.PageRenderer))]
  7. namespace MyApp.iOS.Renderers
  8. {
  9.  
  10. public class PageRenderer : Xamarin.Forms.Platform.iOS.PageRenderer
  11. {
  12. public override void ViewDidLoad()
  13. {
  14. base.ViewDidLoad();
  15.  
  16. if (NativeView == null) return;
  17.  
  18. var existingRecognizer = NativeView.GestureRecognizers.OfType<UITapGestureRecognizer>().FirstOrDefault();
  19. if (existingRecognizer != null)
  20. {
  21. NativeView.RemoveGestureRecognizer(existingRecognizer);
  22.  
  23. var uiTapGestureRecognizer = new UITapGestureRecognizer(a => NativeView?.EndEditing(true));
  24.  
  25. uiTapGestureRecognizer.ShouldRecognizeSimultaneously = (recognizer, gestureRecognizer) => true;
  26. uiTapGestureRecognizer.ShouldReceiveTouch = OnShouldReceiveTouch;
  27. uiTapGestureRecognizer.DelaysTouchesBegan = uiTapGestureRecognizer.DelaysTouchesEnded = uiTapGestureRecognizer.CancelsTouchesInView = false;
  28. NativeView.AddGestureRecognizer(uiTapGestureRecognizer);
  29. }
  30. }
  31.  
  32. bool OnShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
  33. {
  34. foreach (UIView v in ViewAndSuperviewsOfView(touch.View))
  35. {
  36. if (v is UITableView || v is UITableViewCell || v.CanBecomeFirstResponder)
  37. return false;
  38. }
  39. return true;
  40. }
  41.  
  42. IEnumerable<UIView> ViewAndSuperviewsOfView(UIView view)
  43. {
  44. while (view != null)
  45. {
  46. yield return view;
  47. view = view.Superview;
  48. }
  49. }
  50. }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement