2014-12-19 8 views
11

nasıl kullanıcıların Xamarin.Forms Label kopyalayıp yapıştırmak izin veriyoruz bir Xamarin.Forms etiketten kopyalama ve yapıştırma nasıl izin veririm? Varsayılan ayarlar vurgulama ve bu nedenle kopyalayıp yapıştırarak izin vermez herhangi bir platformda metin üzerindenasıl Kullanıcıların

tıklayın.

Herhangi bir yardım

mutluluk duyacağız.

+0

Ben de kullanıcıların Xamarin.Forms etiketten kopyalayıp yapıştırmak için izin istiyorum duyuyorum. Ben android gibi Xamarin.Forms herhangi bir pano yöneticisi bulamadık. Bunun için herhangi bir eğitim varsa lütfen yönlendirin. –

+1

Şimdiye kadar herhangi bir yardım yok. Xamarin.Forms kullanarak bu mümkün değil mi? –

+1

ben onu takip ve bizim için süper önemli özelliği değildi hiç vazgeçmedi. – Jhayes2118

cevap

6

Ne yapabileceğini bir jest tanıyıcı daki etiketi sarmak geçerli:

<Label Text="Test"> 
    <Label.GestureRecognizers> 
     <TapGestureRecognizer 
      Tapped="YourFunctionToHandleMadTaps" 
      NumberOfTapsRequired="1" 
     /> 
    </Label.GestureRecognizers> 
</Label> 

Bu fonksiyon tetikleyecektir ve bu işlevinde panoya almak ve kopyalama ve yapıştırma yapabilirsiniz. Ancak sana bağımlılık hizmeti kullanmak zorunda Xamarin.Forms içinde panoya erişmek için kolay bir yol bulmak mümkün olmamıştır. İşte

Xamarin.Forms Dependency service documentation

benim pano veri erişimi yaptım nasıl.

public interface IClipBoard 
    { 
     String GetTextFromClipBoard(); 
    } 
:

  1. sende XF proje örneğin bir arabirim oluşturun: Projemdeki sadece bu kod sadece panoya erişimine nasıl gösterir böylece panodan verileri yakalamak için gerekli olduğunu lütfen unutmayın

  2. mobil projelerde arabirimini uygular:

    Android: 
        public string GetTextFromClipBoard() 
        { 
         var clipboardmanager = (ClipboardManager)Forms.Context.GetSystemService (Context.ClipboardService); 
         var item = clipboardmanager.PrimaryClip.GetItemAt(0); 
         var text = item.Text; 
         return text; 
        } 
    
    iOs: 
        public string GetTextFromClipBoard() 
        { 
         var pb = UIPasteboard.General.GetValue ("public.utf8-plain-text"); 
         return pb.ToString(); 
        } 
    

MONTAJLARI eklemeyi unutmayın üstte bly bitleri:

iOs: [assembly: Dependency (typeof (ClipBoard_iOs))] 
    Android: [assembly: Dependency (typeof (ClipBoard_Droid))] 
  1. Çağrı bağımlılık hizmeti senden XF fonksiyonu

    public void YourFunctionToHandleMadTaps(Object sender, EventArgs ea) 
        { 
         var clipboardText = DependencyService.Get<IClipBoard>().GetTextFromClipBoard(); 
    
         YourFunctionToHandleMadTaps.Text = clipboardText; 
        } 
    
0

I_Khanage sadece yarım çözüm sağladı beri, tam çözümü yayınlayacak.

IClipboardService

benim durumumda Android ve iOS olarak, tüm hedefleme platformları için uygulanması gereken:

public interface IClipboardService 
{ 
    string GetTextFromClipboard(); 
    void SendTextToClipboard(string text); 
} 

// iOS 
public class ClipboardService : IClipboardService 
{ 
    public string GetTextFromClipboard() => UIPasteboard.General.String; 
    public void SendTextToClipboard(string text) => UIPasteboard.General.String = text; 
} 

// Android 
public class ClipboardService : IClipboardService 
{ 
    public string GetTextFromClipboard() 
    { 
     var clipboardmanager = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService); 
     var item = clipboardmanager.PrimaryClip.GetItemAt(0); 
     var text = item.Text; 
     return text; 
    } 

    public void SendTextToClipboard(string text) 
    { 
     // Get the Clipboard Manager 
     var clipboardManager = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService); 

     // Create a new Clip 
     var clip = ClipData.NewPlainText("YOUR_TITLE_HERE", text); 

     // Copy the text 
     clipboardManager.PrimaryClip = clip; 
    } 
} 

kod github mevcuttur.

Şimdi sadece musluk olayı tetiklemek için bir GestureRecognizer ekleyin.