2012-08-04 20 views
8

मैं एप्लिकेशन लॉन्च होने पर क्लिपबोर्ड पर कॉपी की गई टेक्स्ट प्राप्त करना चाहता हूं।आईओएस एसडीके आवेदन लोड पर क्लिपबोर्ड टेक्स्ट प्राप्त कर रहा है

मैं क्लिपबोर्ड से उपलब्ध पाठ प्राप्त करने के लिए निम्न पाठ का उपयोग कर सकता हूं। लेकिन मुझे इस मान का उपयोग एक अलग व्यू कंट्रोलर में करने की ज़रूरत है। मैं इस व्यू को अपने व्यू कंट्रोलर में कैसे पास कर सकता हूं?

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    NSLog([UIPasteboard generalPasteboard].string); 

} 
+2

क्यों न केवल अपने दृश्य नियंत्रक में '[यूआईपीएस्टबोर्ड सामान्य पेस्टबोर्ड]। स्ट्रिंग' को कॉल करें? –

+0

व्यू कंट्रोलर एप्लिकेशनडिडकमएक्टिव इवेंट का समर्थन नहीं करता है। जब मैं पृष्ठभूमि से सक्रिय हो जाता हूं तो मैं क्लिपबोर्ड सामग्री प्राप्त करना चाहता हूं। – sleepwalkerfx

उत्तर

9

घोषित करने और अपने कुलपति पर एक तरीका है जिसके आप सक्रिय होने पर एप्लिकेशन प्रतिनिधि से कॉल को लागू:

@inferface ViewController: UIViewController { 
    /* etc. */ 
} 

- (void)handlePasteboardString:(NSString *)s; 

@end 
अपने अनुप्रयोग प्रतिनिधि में

: की

- (void)applicationDidBecomeActive:(UIApplication *)a 
{ 
    [self.mainViewController handlePasteboardString:[UIPasteboard generalPasteboard].string]; 
} 
+0

हम्म मैंने कोशिश की है लेकिन यह मुझे एक त्रुटि देता है: AppDelegate.m: 65: 12: संपत्ति 'ViewController' प्रकार 'AppDelegate *' के ऑब्जेक्ट पर नहीं मिली ... मेरा मुख्य दृश्य ViewController कहलाता है, क्या गुम है? क्या मुझे अपने व्यू कंट्रोलर में कुछ प्रतिनिधि जोड़ना चाहिए? – Fredv

+5

@Fredv ओह आओ ... –

10

एक बहुत बेहतर तरीका इसे संभालने के लिए UIApplicationDidBecomeActiveNotification ईवेंट के लिए एक पर्यवेक्षक (दृश्य नियंत्रक में) जोड़ना होगा। इस तरह आप ऐप प्रतिनिधि और दृश्य नियंत्रक के बीच अनावश्यक युग्मन से बचें।

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(getClipboardString:) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 

संपादित करें: जब दृश्य नियंत्रक निकाल दिया जाता है पर्यवेक्षक दूर करने के लिए भूल गया नहीं है:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
0

सुनिश्चित नहीं हैं कि आप क्लिपबोर्ड आइटम चाहते हैं, लेकिन अगर यह उस विशिष्ट दृश्य नियंत्रक दिखाया जाता है जब या दिखाए जाने के बारे में, आप इसे देखने के लिए viewDidLoad में कर सकते हैं उस दृश्य नियंत्रक

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

  • कोई संबंधित समस्या नहीं^_^