2017-02-15 3 views
0

Ich habe eine Textansicht, die Eigenschaften hat -> SELECTABLE: YES und EDITABLE: NO. für eine URL in Textview geschrieben öffnen, machte ich Gebrauch vonSteuern Sie das Aktionsblatt, das angezeigt wird, während Sie die URL in der Textansicht lang drücken

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

Delegatmethode von Textview, die feine Arbeit zu sein scheint.

Das Problem ist, wenn ein Benutzer den Link in Textansicht lange drückt, erscheint ein Aktionsblatt, das das Standardverhalten ist. Ich möchte dieses Aktionsblatt kontrollieren.

Bitte schlagen Sie Wege vor.

enter image description here

Haben Sie versucht ActionSheet Delegierten mit, aber es hat nicht funktioniert.

+0

Was möchten Sie im 'actionsheet' kontrollieren? – iPeter

+0

Wenn Sie eine Bibliothek von Drittanbietern verwenden möchten, [TTTAttributedLabel] (https://github.com/TTTAttributedLabel/TTTAttributedLabel) hat eine Menge zu bieten. Ich habe es in verschiedenen Projekten verwendet, um 'Hyperlinks' in Textblöcke einzufügen, ohne die tatsächliche URL anzeigen zu müssen (ein bisschen äquivalent zu '' Tags in HTML). – Olivier

+0

Wenn Sie einen zusätzlichen Bibliotheksnamen verwenden, wird –

Antwort

0

Swift4

einfach zurückgeben false in -shouldInteractWith aber Sie haben die Interaktion selbst zu behandeln, wenn Sie benötigen.

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 
} 
Verwandte Themen