【问题标题】:On iphone 3.0 how to disable Cut, Copy and Paste option在 iphone 3.0 上如何禁用剪切、复制和粘贴选项
【发布时间】:2009-06-27 07:33:16
【问题描述】:

有谁知道,如何在 iPhone 3.0 上禁用剪切、复制和粘贴选项?

感谢您的帮助和时间。

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

    我也找不到太多关于为此目的使用 canPerformAction:withSender: 的文档。所以,我决定在退出应用程序时清除粘贴板。在我的 AppDelegate.m 中:

    - (void)applicationWillTerminate:(UIApplication *)application {
    
      NSLog(@"application terminating");
    
      // Clear pasteboard to prevent pasting into other applications:
      UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
      pasteBoard.items = nil;
    
    }
    

    这适用于我的用户注释参考应用程序。我不介意用户在我的应用程序中复制和粘贴,但我希望他们不要重新发布我的原始内容。

    在某些时候,我想要更细粒度的控制,也许使用 canPerformAction:withSender:,这样我就可以允许用户复制/粘贴他们自己创建的内容。

    【讨论】:

      【解决方案2】:

      在控制器类中重写此方法。

      // 隐藏剪切/复制/粘贴菜单

      -(BOOL)canPerformAction:(SEL)action withSender:(id)sender {
      
          if ( [UIMenuController sharedMenuController] )
          {
              [UIMenuController sharedMenuController].menuVisible = NO;
      
          }
          return NO;  
      }
      

      【讨论】:

      • 嗯...由于某种原因,这对我不起作用。我的 UITextField 在 UITableViewCell 中。当我将它添加到我的 UITableViewController 子类时,我可以验证所有选择器的所有内容都被重复调用,但菜单仍然显示。知道可能出了什么问题吗?
      • 这里也一样。我可以验证它是否被调用,但菜单仍然出现。我的目标是 iOS 5 - 所以我想知道自 iOS 3 以来是否发生了一些变化?
      【解决方案3】:

      任何响应者(UIView 或 UIWindow 子类)都可以覆盖 canPerformAction:withSender: 方法,因此您可以对所有您不想允许的操作返回 NO。

      查看UIResponder documentation...

      【讨论】:

      • 感谢 David 的回复,但不幸的是,我刚开始 iphone 开发的一周。你介意告诉我如何使用这个实例方法吗?一个示例代码会很棒。在我的 UI 视图中,我有两个文本控件,我想禁用这两个控件。
      • 看起来您必须创建一个覆盖 canPerformAction 的 UITextField 的子类,然后将该类用于您的输入字段。我不认为这一切都很难做到,但我对 Objective C 还很陌生,所以我必须花一些时间来弄清楚细节;也许其他人可以举个例子。
      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2018-01-19
      • 1970-01-01
      • 2010-11-17
      相关资源
      最近更新 更多