Können wir das Cut Copy Paste Menü ermöglichen ein
UILabel
wie es für einUITextField
ist?anzeigen iPhone schneiden Kopieren und Einfügen-Menü auf UILabelWenn nicht, und ich muss meine
UILabel
inUITextField
konvertieren, wie kann ich das Ausschneiden Kopieren einfügen Menü aktivieren und nicht zulassen, dass der Inhalt geändert werden?
Antwort
überschreiben die UITextField
textFieldShouldBeginEditing
Methode der Instanz, und setzt es NO
zurückzukehren, um die Bearbeitung zu deaktivieren.
Weitere Details finden Sie im Protokoll UITextFieldDelegate
.
ich die Kopie & Paste Menü auf einem UILabel
Arbeits bekam, musste ich einfach YES
für canBecomeFirstResponder
zurückzukehren und [label becomeFirstResponder]
später anrufen, wenn das das Etikett auf dem Bildschirm zu kommen war. Was YES
von canBecomeFirstResponder
Rückkehr, können Sie eine benutzerdefinierte Unterklasse UILabel
mit einer Kategorie erstellen oder patchen:
@implementation UILabel (Clipboard)
- (BOOL) canBecomeFirstResponder
{
return YES;
}
@end
Die Kategorie-Lösung ein bisschen hackish fühlt, aber wenn Sie wissen, was Sie tun könnte es einfacher sein als Subklassen . Ich habe auch eine sample project on GitHub, die zeigt, wie ein einfaches Pasteboard-Menü auf einem UILabel
angezeigt wird.
Ich habe einige zusätzliche Funktionen zu Zoul's Repo hinzugefügt. https://github.com/zhbrass/UILabel-Clipboard – zhbrass
Die sample project on github aufgrund @ Zouls Antwort ist der Weg zu gehen. Zum Zeitpunkt dieses Schreibens legt dieses Projekt nichts in die Zwischenablage (Pappe). hier ist, wie:
ändern @ Zoul Implementierung dieses Verfahrens:
- (void) copy:(id)sender {
UIPasteboard *pboard = [UIPasteboard generalPasteboard];
pboard.string = self.text;
}
@benvolioT's github project sehr gutes Beispiel für das Kopieren ist. Und zum Einfügen passen Sie canPerformAction:withSender:
an. Für mehr siehe Beispiel CopyPasteTile.
Ich habe Zoul das Beispielprojekt gegabelt und Unterstützung für ARC (und ein paar andere Funktionen), wenn noch jemand interessiert ist:
https://github.com/zhbrass/UILabel-Clipboard
CopyLabel.h/.m sollte das sein, was du bist Suche
Gut gemacht. Vielen Dank. –
habe ich eine Open-Source-UILabel Unterklasse gebildet, die eine UIMenuController mit einer Option "Kopieren" auf lange drücken zeigt:
HTCopyableLabel auf GitHub
Für Swift 3 und Swift 4 Sie haben diese Klasse zu implementieren:
import UIKit
class CopyableLabel: UILabel {
override init(frame: CGRect) {
super.init(frame: frame)
self.sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.sharedInit()
}
func sharedInit() {
self.isUserInteractionEnabled = true
self.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(self.showMenu)))
}
@objc func showMenu(sender: AnyObject?) {
self.becomeFirstResponder()
let menu = UIMenuController.shared
if !menu.isMenuVisible {
menu.setTargetRect(bounds, in: self)
menu.setMenuVisible(true, animated: true)
}
}
override func copy(_ sender: Any?) {
let board = UIPasteboard.general
board.string = text
let menu = UIMenuController.shared
menu.setMenuVisible(false, animated: true)
}
override var canBecomeFirstResponder: Bool {
return true
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(UIResponderStandardEditActions.copy) {
return true
}
return false
}
}
In Storyboard Unterklasse nur die UILabel
mit CopyableLabel
Klasse
Das funktioniert perfekt für mich. Vielen Dank! –
Swift 4 ☻ Xcode 9.2 Durch UIMenuController
verwenden wir können TU es.
I IBDesignable
Benutzerdefinierte UILabel
Klasse erstellt haben, die Sie auf Storyboard
@IBDesignable
class TapAndCopyLabel: UILabel {
override func awakeFromNib() {
super.awakeFromNib()
//1.Here i am Adding UILongPressGestureRecognizer by which copy popup will Appears
let gestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGesture(_:)))
self.addGestureRecognizer(gestureRecognizer)
self.isUserInteractionEnabled = true
}
// MARK: - UIGestureRecognizer
@objc func handleLongPressGesture(_ recognizer: UIGestureRecognizer) {
guard recognizer.state == .recognized else { return }
if let recognizerView = recognizer.view,
let recognizerSuperView = recognizerView.superview, recognizerView.becomeFirstResponder()
{
let menuController = UIMenuController.shared
menuController.setTargetRect(recognizerView.frame, in: recognizerSuperView)
menuController.setMenuVisible(true, animated:true)
}
}
//2.Returns a Boolean value indicating whether this object can become the first responder
override var canBecomeFirstResponder: Bool {
return true
}
//3.Here we are enabling copy action
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return (action == #selector(UIResponderStandardEditActions.copy(_:)))
}
// MARK: - UIResponderStandardEditActions
override func copy(_ sender: Any?) {
//4.copy current Text to the paste board
UIPasteboard.general.string = text
}
}
Ausgang direkt zuordnen können:
- 1. NSString Problem auf iphone, während auf UILabel Anzeigen
- 2. Schneiden eines UIImage auf dem iPhone
- 3. Zeigt UILabel auf iPhone Video-Anwendung
- 4. iPhone UILabel sizeWithFont:
- 5. iPhone: UILabel Breite in CellForRowAtIndexPath
- 6. Emoji in einem UILabel anzeigen?
- 7. Wie kann ich einen NSAttributedString auf einem iPhone anzeigen?
- 8. Kopieren und Einfügen auf dem iPhone mit mehreren Datendarstellungen
- 9. Force UILabel zum Anzeigen von 2 Zeilen
- 10. Ändern Schriftart und Gewicht in UILabel (iPhone SDK)
- 11. Sehr einfache iPhone App stürzt auf UILabel settext
- 12. Wie zeigt man den Countdown auf uilabel im iPhone?
- 13. Text auf einem UILabel in digitaler Form anzeigen?
- 14. Wie verschiedene Farben anzeigen und Schrifttypen in einem UILabel
- 15. UILabel font: fett und kursiv
- 16. Wie kann UILabel den UISlider-Wert anzeigen?
- 17. Anzeigen von PDFs auf dem iPhone - CALayers?
- 18. UILabel - Einstellung Schriftart - Schriftart programmgesteuert in iPhone
- 19. Erstellen von Text Stroke für UILabel iphone
- 20. Linux schneiden und grep
- 21. Stopp PhpStorm vom Schneiden/Kopieren der gesamten Linie, wenn nichts
- 22. iPhone UDID auf Preferences/Einstellungen anzeigen?
- 23. iPhone: Kameravorschau anzeigen
- 24. Begrenzen Sie das UILabel auf 500 Zeichen und dann kürzen Sie das UIlabel in IOS
- 25. UILabel Absatz Textausrichtung
- 26. iPhone-Tastatur programmgesteuert anzeigen
- 27. WPF: Bild schneiden und speichern
- 28. UILabel sizeToFit und constraints
- 29. Union und schneiden in Django
- 30. Touches auf UILabel
Glück gehabt mit der Option Nummer 2? Ich versuche gerade, eine UILabel-Unterklasse zu verkabeln, um eine sehr einfache Kopiermenüoption zu unterstützen, es ist kein besonders einfacher Prozess. –