2017-02-20 3 views
1

貼り付けられる前に貼り付けられたコンテンツを取得する方法はありますか?理想的には、ユーザーが編集可能な要素のデフォルトのポップアップメニューから「貼り付け」を選択したときに貼り付ける内容を読むことが理想です。今は、コンテンツ編集可能なdivを持つUIWebViewを見ています。UIWebView(Swift)のペーストアクションを傍受する

コード私はこれまでのところ(ルドビクの答えに触発さ)き

class myWebView: UIWebView { 

     override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 
     print(action) 

     return super.canPerformAction(action, withSender: sender) 
    } 

} 

出力(Iは、コンテンツの編集可能なdiv要素をタップするたびに):

カット: コピー: 選択: のSelectAll: 削除: _promptForReplace: _transliterateChinese: _showTextStyleOptions: _lookup: _define: _addShortcut: _accessibilitySpeak: _accessibilitySpeakLanguageSelection: _accessibilityPauseSpeaking: _share: makeTextWritingDirectionRightToLeft: makeTextWritingDirectionLeftToRight:

本家ペーストセレクタがここにリストされていない、それはポップアップメニューで利用可能です。

+0

テキストフィールドのテキストが表示されます。 – Tj3n

+0

あなたは 'UITextField'または' UITextView'でコンテンツを貼り付けることを意味していますか?これのために – KrishnaCA

答えて

0

あなたは、あなたのアプリでどこでも、この機能を持っているすべてのUITextFieldを拡張したりのみ与えられたUITextFieldクラス

ため、この機能を持っているカスタムCatchPasteTextFieldを作成することができ、アクション

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 
    if action == #selector(paste(_:)) { 
     // Do something 
     return false // Will disable paste action 
    } 

    return super.canPerformAction(action, withSender: sender) 
} 

をキャッチするためにcanPerformActionメソッドをオーバーライドする必要があります

+0

ありがとうございます。更新された質問をご覧ください。まだ動作していないようです。申し訳ありませんが、私はUIWebViewを見ていることを忘れていました。 –

+0

私は試したことがありませんが、これはUIWebViewで動作するはずです。 UITextFieldの代わりにUIWebViewを拡張する – Ludovic

0

それは

let pasteboardString: String? = UIPasteboard.general.string 
if let theString = pasteboardString { 
    print("String is \(theString)") 
} 
+1

これは、UIPasteboardにコピーされた文字列を表示するだけで、ユーザーが「貼り付け」をタッチする前にトリガーされないと考えています。 – Ludovic

+0

あなたはUITextFieldまたはUITextViewでコンテンツを貼り付けることを意味しますか? – Ram

0

OBJECとして貼り付ける前に、貼り付けたコンテンツを取得することができますTIVE C

CLS_LOG(@"copied test %@",[[UIPasteboard generalPasteboard] string]); 

スウィフト私は、ユーザーがインターセプト多分、アクションを傍受わからない、いくつかのブラウザアプリに似た何かを、行う前に、あなただけ読んで、それを表示することができると思い

print("String is \(UIPasteboard.general.string)") 
+0

このコードはどこに置く必要がありますか?一般のペーストボードがコンテンツをコピーしたことはいつ知っていますか? –

関連する問題