Skip to content

Instantly share code, notes, and snippets.

@colbylwilliams
Created January 13, 2016 20:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colbylwilliams/87dfab1ea4fb302ecaa7 to your computer and use it in GitHub Desktop.
Save colbylwilliams/87dfab1ea4fb302ecaa7 to your computer and use it in GitHub Desktop.
UIWebView subclass that only displays Copy & Paste
using Foundation;
using UIKit;
using CoreGraphics;
using ObjCRuntime;
using MobileCoreServices;
namespace WebViewExample.iOS
{
public class CustomWebView : UIWebView
{
public CustomWebView (CGRect frame) : base(frame)
{
}
public override bool CanPerform (Selector action, NSObject withSender)
{
return action.Name.Equals("copy:") || (action.Name.Equals("paste:") && UIPasteboard.General.Contains(new string[] { UTType.Text }));
}
}
}
@sarkarjayanta
Copy link

using System;
using UIKit;
using CoreGraphics;
using MobileCoreServices;

namespace pocIpad
{
    public class CustomWebView :UIWebView
    {
        public CustomWebView (CGRect frame) : base(frame)
        {
            //UIMenuController.SharedMenuController.MenuVisible = false;
        }

        public override bool CanPerform (ObjCRuntime.Selector action, Foundation.NSObject withSender)
        {
//          //return base.CanPerform (action, withSender);
//          UIMenuController.SharedMenuController.MenuVisible = false;
//          if (UIMenuController.SharedMenuController.MenuItems != null && UIMenuController.SharedMenuController.MenuItems.Length > 0) {
//              var mn = UIMenuController.SharedMenuController.MenuItems.Length;
//          }
//          //UIMenuController.SharedMenuController.
//          return false;
            return action.Name.Equals("copy:") || (action.Name.Equals("paste:") && UIPasteboard.General.Contains(new string[]{UTType}));
        }


    }
}



using System;

using UIKit;
using CoreGraphics;

namespace pocIpad
{
    public partial class mainView : UIViewController
    {
        public mainView () : base ("mainView", null)
        {
        }

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            // Perform any additional setup after loading the view, typically from a nib.
            this.View.BackgroundColor = UIColor.LightGray;
            InjectJavaScript ();
            //UIMenuController.SharedMenuController.SetMenuVisible(false,true);
        }

        public override void DidReceiveMemoryWarning ()
        {
            base.DidReceiveMemoryWarning ();
            // Release any cached data, images, etc that aren't in use.
        }

        private void InjectJavaScript()
        {
            TestingWebView.Hidden = true;
            string htmlScript ="<!DOCTYPE html><html><body><textarea rows=\"4\" cols=\"50\">we are in poc</textarea></body></html>";
            TestingWebView.LoadHtmlString(htmlScript,null);




            //
            var custWebView = new CustomWebView(new CGRect (23, 10, 400, 500));
            custWebView.Frame = new CGRect (23, 10, 400, 500);
            this.Add (custWebView);
            custWebView.LoadHtmlString (htmlScript,null);
            //
        }

//      public override bool CanPerform (ObjCRuntime.Selector action, Foundation.NSObject withSender)
//      {
//          //return base.CanPerform (action, withSender);
//          var ti = UIMenuController.SharedMenuController.MenuItems;
//          UIMenuController.SharedMenuController.MenuVisible = false;
//          if (UIMenuController.SharedMenuController.MenuItems != null && UIMenuController.SharedMenuController.MenuItems.Length > 0) {
//              var mn = UIMenuController.SharedMenuController.MenuItems.Length;
//          }
//          return false;
//      }
//
//      public override bool RespondsToSelector (ObjCRuntime.Selector sel)
//      {
//          return base.RespondsToSelector (sel);
//          if(sel.Name.Contains("copy"))
//              {
//              int i = 0;
//              }
//          if (UIMenuController.SharedMenuController.MenuItems != null && UIMenuController.SharedMenuController.MenuItems.Length > 0) {
//              var mn = UIMenuController.SharedMenuController.MenuItems.Length;
//          }
//      }
//      public override void RemoveObserver (Foundation.NSObject observer, Foundation.NSString keyPath, IntPtr context)
//      {
//          base.RemoveObserver (observer, keyPath, context);
//          if (UIMenuController.SharedMenuController.MenuItems != null && UIMenuController.SharedMenuController.MenuItems.Length > 0) {
//              var mn = UIMenuController.SharedMenuController.MenuItems.Length;
//          }
//      }
//
//      public override void PrepareForInterfaceBuilder ()
//      {
//          base.PrepareForInterfaceBuilder ();
//          if (UIMenuController.SharedMenuController.MenuItems != null && UIMenuController.SharedMenuController.MenuItems.Length > 0) {
//              var mn = UIMenuController.SharedMenuController.MenuItems.Length;
//          }
//      }

    }
}

it's does not work please check my above sample class.

@sarkarjayanta
Copy link

it's does not work still all menu comes (copy, paste, define, select etc.).

@sarkarjayanta
Copy link

hi any update on above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment