2009-06-28 16 views
6

iPhone Pastboard'de düz metinler koymaya çalışıyorum. Aşağıdaki kod çalışmıyor:Temel iPhone kullanım alanı kullanımı

UIPasteboard *pboard = [UIPasteboard generalPasteboard]; 
NSString *value = @"test"; 
[pboard setValue: value forPasteboardType: @"public.plain-text"]; 

Sorunun PasteBoard türü bağımsız değişkeninde olduğunu tahmin ediyorum. @"public.plain-text"'u geçerken hiçbir şey olmuyor. kUTTypePlainText'u geçmek, derleyici uyumsuz işaretçi türü hakkında şikâyet eder, ancak çökmez ve hiçbir şey de olmaz. kUTTypePlainText'u kullanmak, dokümanlarda belirtilmeyen MobileCoreServices ile bağlantı gerektiriyor gibi görünüyor. yorumlarına yanıt veren ve kendi soru

+2

- [UIPasteboard setString:] yöntemini kullanmak yerine neden bunu yaptığınızı sorabilir miyim? Ayrıca, "hiçbir şey olmuyor?" Ile ne demek istiyorsun? Tam olarak ne olmasını bekliyordun? Bunu nasıl belirliyorsunuz? –

cevap

8

:

  • pasteboard dize mülkiyet çalışmalarını ayarlama.
  • setValue:forPasteboardType: kullanımı, çalışma alanı türü için kUTTypePlainText yerine kUTTypeUTF8PlainText kullanırsam çalışır.

Ben "Alma ve Tek Karton Ürünleri ayarlama" görevler bölümü doğrudan gitti çünkü dize özelliğini fark etmemişlerdi.

Test ettiğim yol, bir metin alanına tıklayıp yapıştırma pop-up'ının görünüp görünmeyeceğiydi.

Halen aldığım dokümanın nerede olduğunu bilmiyorum (Çerçeve, #include dosyaları), bu türdeki UTT türlerinin nerede olduğu konusunda emin değilim. "Tekdüzen Tipi Tanımlayıcılara Genel Bakış" adlı belgenin hala Mac'e yönelik olduğu görülüyor İŞLETİM SİSTEMİ. Sabitler bana bir tür uyuşmazlık uyarısı verdiğinden, yanlış bir şey yaptığımı düşündüm, bu yüzden ilk olarak bir NSString literal kullanmayı denedim.

+1

Mac OS X'e yönelmekle ilgisi yok, açıkladığım gibi, sadece ipi dökmeniz gerekiyor. Sabitler, NSString ile köprülenmeyen ücretsiz CFStringRef olarak bildirilmiştir. Sadece şunu yapın: (NSString *) kUTTypePlainText –

19

kUTTypeUTF8PlainText için değer elde etmek için bu üstbilgiyi kullanın;

#import <MobileCoreServices/UTCoreTypes.h> 

MobileCoreServices çerçevesinin kullanılabilir olması gerekir.

+3

Sadece kristal netliğini sağlamak için uygulama: '[pboard setValue: value forPasteboardType: (NSString *) kUTTypeUTF8PlainText];' –

3

İşte, tahtaya metin yapıştırma ile ilgili deneylerim. Metni programlı olarak eklemek için bir düğme kullanıyorum.

#import <MobileCoreServices/MobileCoreServices.h> 

- (IBAction)setPasteboardText:(id)sender 
{ 
    UIPasteboard *pb = [UIPasteboard generalPasteboard]; 
    NSString *text = @"東京京都大阪"; 

    // Works, but generates an incompatible pointer warning 
    [pb setValue:text forPasteboardType:kUTTypeText]; 

    // Puts generic item (not text type), can't be pasted into a text field 
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeItem]; 

    // Works, even with non-ASCII text 
    // I would say this is the best way to do it with unknown text 
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeText]; 

    // Works without warning 
    // This would be my preferred method with UTF-8 text 
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeUTF8PlainText]; 

    // Works without warning, even with Japanese characters 
    [pb setValue:text forPasteboardType:@"public.plain-text"]; 

    // Works without warning, even with Japanese characters 
    [pb setValue:text forPasteboardType:@"public.text"]; 

    // Check contents and content type of pasteboard 
    NSLog(@"%@", [pb items]); 
} 

Ben kontrol etmek için bir metin alanına içeriğini yapıştırılan ve metin içindekilerin sadece yeniden kullanarak değildi önceki macunu emin olmak için her zaman değişti.

+0

Bir görüntüyü yapıştırmak istersem ne yapmalıyım? – Ramakrishna

İlgili konular