56
  1. のカット コピー ペースト メニューを のように有効にすることはできますUILabelUITextField?

  2. そうでない場合、および に変換する必要がある場合UILabelUITextFieldカット コピー ペースト メニューを有効にしてコンテンツを変更できないようにするにはどうすればよいですか?

4

12 に答える 12

40

でコピー&ペーストメニューが機能するようになりました。ラベルが画面に表示されるときUILabelに戻っYEScanBecomeFirstResponder、後で呼び出す必要がありました。から[label becomeFirstResponder]戻る場合は、カテゴリを使用してカスタム サブクラスまたはパッチを作成できます。YEScanBecomeFirstResponderUILabel

@implementation UILabel (Clipboard)

- (BOOL) canBecomeFirstResponder
{
    return YES;
}

@end

カテゴリ ソリューションは少しハックに感じますが、何をしているのかを知っていれば、サブクラス化よりも簡単かもしれません。また、簡単なペーストボード メニューを .NET ファイルに表示する方法を示すサンプル プロジェクトを GitHub に公開UILabelしました。

于 2010-04-16T13:55:28.257 に答える
25

@zoulの回答によるgithubのサンプルプロジェクトが道です。これを書いている時点では、そのプロジェクトは実際にはクリップボード (ペーストボード) に何も置いていません。方法は次のとおりです。

このメソッドの @zoul の実装を次のように変更します。

- (void) copy:(id)sender {
    UIPasteboard *pboard = [UIPasteboard generalPasteboard];
    pboard.string = self.text;  
}
于 2011-02-15T05:46:22.113 に答える
6

長押しすると「コピー」オプションを使用して UIMenuController を表示するオープンソースの UILabel サブクラスを作成しました。

GitHubの HTCopyableLabel

于 2013-07-30T15:33:25.180 に答える
5

私は zoul のサンプル プロジェクトをフォークし、ARC (および他のいくつかの機能) のサポートを追加しました。

https://github.com/zhbrass/UILabel-Clipboard

CopyLabel.h/.m はあなたが探しているものでなければなりません

于 2013-04-26T15:12:34.820 に答える
2

UITextFieldインスタンスのメソッドをオーバーライドし、編集を無効にするためtextFieldShouldBeginEditingに return に設定します。NO

詳細については、UITextFieldDelegateプロトコルをご覧ください。

于 2009-08-07T19:01:22.247 に答える
1

複数行のテキストがある場合は、使用する必要がありますUITextView

デリゲートを設定します。

func textView(_ textView: UITextView,
              shouldChangeTextIn range: NSRange,
              replacementText text: String) -> Bool {
    return false
}

そして、それは魔法のように機能するはずです:)

于 2018-04-30T23:44:58.340 に答える
0

@benvolioTのgithubプロジェクトは、コピーの非常に良い例です。貼り付けの場合は、をカスタマイズしcanPerformAction:withSender:ます。詳細については、CopyPasteTileの例を参照してください。

于 2012-02-25T22:08:21.123 に答える