2009-06-28 10 views
6

मैं आईफोन पेस्टबोर्ड में कुछ सादा पाठ डालने की कोशिश कर रहा हूं। निम्नलिखित कोड काम नहीं कर रहा है:बेसिक आईफोन पेस्टबोर्ड उपयोग

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

मुझे लगता है कि समस्या पेस्टबोर्ड प्रकार तर्क में है। पासिंग @"public.plain-text" कुछ भी नहीं होता है। kUTTypePlainText पास करने वाला संकलक असंगत सूचक प्रकार के बारे में शिकायत करता है, लेकिन क्रैश नहीं होता है, और कुछ भी नहीं होता है। kUTTypePlainText का उपयोग करने के लिए MobileCoreServices से लिंक करने की आवश्यकता होती है, जिसका दस्तावेज़ों में उल्लेख नहीं है।

+2

क्या मैं पूछ सकता हूं कि आप - [UIPasteboard setString:] विधि का उपयोग करने के बजाय ऐसा क्यों कर रहे हैं? इसके अलावा, "कुछ भी नहीं होता" से आपका क्या मतलब है? आप वास्तव में क्या होने की उम्मीद कर रहे थे? आप इसे कैसे निर्धारित कर रहे हैं? –

उत्तर

8

टिप्पणियों का जवाब देते और मेरे अपने प्रश्न:

  • pasteboard स्ट्रिंग संपत्ति काम करता है की स्थापना।
  • setValue:forPasteboardType: का उपयोग करना भी काम करता है अगर मैं पेस्टबोर्ड प्रकार के लिए kUTTypePlainText के बजाय kUTTypeUTF8PlainText का उपयोग करता हूं।

क्योंकि मैं "हो रही है और एकल पेस्टबोर्ड आइटम स्थापना" कार्य अनुभाग के लिए सीधे चला गया मैं स्ट्रिंग संपत्ति पर ध्यान नहीं दिया था।

जिस तरह से मैं परीक्षण कर रहा था वह टेक्स्ट फ़ील्ड में क्लिक करके था और देखें कि पेस्ट पॉप-अप दिखाई देगा या नहीं।

मुझे अभी भी यकीन नहीं है कि आईटीटी प्रकारों को आईफोन के लिए समझाया गया है, जिसमें उन्हें कहां प्राप्त किया जाए (फ्रेमवर्क, #include फाइलें), ऐसा लगता है कि "वर्दी टाइप आइडेंटिफायर अवलोकन" डॉक्टर अभी भी मैक की ओर तैयार है ओएस। चूंकि स्थिरांक ने मुझे एक प्रकार की मेल-मिलाप चेतावनी दी, मैंने सोचा कि मैं कुछ गलत कर रहा था, इसलिए मैंने पहली बार NSString शाब्दिक उपयोग करने का प्रयास किया।

+1

मैक ओएस एक्स की तरफ जाने के साथ इसका कोई लेना-देना नहीं है, जैसा कि मैंने समझाया है, आपको केवल स्ट्रिंग डालने की आवश्यकता है। स्थिरांक को CFStringRef के रूप में घोषित किया जाता है, जो एनएसएसटींग के साथ टोलफ्री है। बस करें: (एनएसएसटींग *) kUTTypePlainText –

19

kUTTypeUTF8PlainText के लिए मान प्राप्त करने के लिए इस शीर्षलेख का उपयोग करें;

#import <MobileCoreServices/UTCoreTypes.h> 

आप MobileCoreServices ढांचा उपलब्ध है की आवश्यकता होगी।

+3

कार्यान्वयन सिर्फ इसे क्रिस्टल स्पष्ट करने के लिए: '[pboard setValue: मूल्य के लिए मूल्यबोर्ड प्रकार: (एनएसएसटींग *) kUTTypeUTF8PlainText]; ' –

3

पेस्टबोर्ड पर चिपकाने वाले पाठ के साथ मेरे प्रयोग यहां दिए गए हैं। मैं प्रोग्राम को प्रोग्रामिक रूप से जोड़ने के लिए एक बटन का उपयोग कर रहा हूं।

#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]); 
} 

मैं जाँच करने के लिए एक पाठ क्षेत्र में सामग्री चिपकाया, और पाठ सामग्री हर बार यकीन है कि यह सिर्फ फिर से उपयोग नहीं कर रहा था पिछले पेस्ट बनाने के लिए बदल दिया है।

+0

यदि मुझे कोई छवि पेस्ट करना है तो मुझे क्या करना चाहिए? – Ramakrishna

संबंधित मुद्दे