2017-02-15 4 views
0

プロパティ - > SELECTABLE:YESおよびEDITABLE:NOのテキストビューを持っています。 TextViewに書かれたURLを開くための は、私が正常に動作しているようだのTextViewのURLを長押しして表示されるアクションシートを制御する

- (BOOL)textView:(UITextView)textView shouldInteractWithURL:(NSURL)URL inRange:(NSRange)characterRange 

デリゲートメソッドを利用しました。

問題は、ユーザーがテキストビューのリンクを長押しすると、デフォルトの動作であるアクションシートがポップアップすることです。私はそのアクションシートをコントロールしたい。

方法をご提案ください。

enter image description here

はActionSheetデリゲートを使用してみましたが、それは働いていませんでした。

+0

あなたは 'actionsheet'で何を制御したいですか? – iPeter

+0

サードパーティのライブラリ[TTTAttributedLabel](https://github.com/TTTAttributedLabel/TTTAttributedLabel)を使用していただければ幸いです。私はさまざまなプロジェクトで、実際のURL(HTML内の ''タグに相当)を表示することなく、テキストブロックに 'ハイパーリンク'を挿入しています。 – Olivier

+0

追加のライブラリ名を使用している場合は、オープンアクションシートを必要としない場合は –

答えて

0

Swift4

単に-shouldInteractWithfalseを返しますが、あなたがいずれかを必要とする場合の相互作用を自分で処理する必要があり。

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool 
{  
    print(String(format: "%@", URL as CVarArg)) 

    let alerSheet = UIAlertController.init(title: nil, message: nil, preferredStyle: .actionSheet) 

    alerSheet.addAction(UIAlertAction.init(title: "Copy", style: .default, handler: { (action) in 
     print("copy action") 
    })) 

    alerSheet.addAction(UIAlertAction.init(title: "Other", style: .default, handler: { (action) in 
     print("other action") 
    })) 

    alerSheet.addAction(UIAlertAction.init(title: "Cancel", style: .cancel, handler: { (action) in 
     print("cancel action") 
    })) 
    self.present(alerSheet, animated: true, completion: nil) 

    return false 
} 
関連する問題