2010-09-30 18 views
5

मैं मेनू के बारे में बात करता हूं जो पाठ के ब्लॉक का चयन करते समय दिखाता है, यह आपको कट/पेस्ट/कॉपी करने का विकल्प देता है। मुझे पता चला कि मेनू में एक और विकल्प कैसे जोड़ना है, लेकिन यदि मैं दो या दो से अधिक विकल्प जोड़ता हूं तो यह पहले "अधिक" कहेंगे। इसे क्लिक करने से मैंने जो भी विकल्प जोड़े हैं, वे दिखाएंगे। लेकिन क्या मैंने पहले से जोड़े गए सभी विकल्पों को दिखाने का कोई तरीका है? "अधिक" मेनू आइटम के बिना?आईफोन/आईपैड संदर्भ मेनू

उत्तर

7

आपको UIMenuController का उपयोग करने की आवश्यकता है। यदि आप नहीं चाहते हैं कॉपी/पेस्ट/कट, आप अपने canPerformAction: विधि में कुछ इस तरह शामिल करेंगे:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    if(action == @selector(someSelector:)) 
     return YES; 
    else 
     return NO; 
} 

एक नया मेनू आइटम बनाना इस तरह दिखता है:

UIMenuItem *someAction = [[UIMenuItem alloc]initWithTitle:@"Something" action:@selector(doSomething:)]; 

UIMenuController *menu = [UIMenuController sharedMenuController]; 
menu.menuItems = [NSArray arrayWithObject:someAction]; 
[menu update]; 
+1

ऐसा नहीं है कि मैं उनको नहीं चाहता हूं। मुझे दो और मेनू आइटम जोड़ने की जरूरत है। – Melina

+0

फिर भी आप पोस्ट की तरह कुछ उपयोग करते हैं, लेकिन फिर @selector (कॉपी :) कर रहे हैं, इसे @selector (copyText :) जैसे कुछ में बदलें, फिर अपनी खुद की - (शून्य) copyText विधि को कॉपी करें जो प्रतिलिपि बनाता है। फिर आपके अन्य आइटम अधिक मेनू पर धक्का नहीं दिए जाएंगे। – christo16

+0

क्या मैं मेनू आइटम का टेक्स्ट बदल सकता हूं? – Melina

1

मुझे लगता है आपके UIMenuController के बारे में बात कर रहे हैं।

- (BOOL)canPerformAction: (SEL)action withSender: (id)sender { 
    BOOL answer = NO; 
    if (action == @selector(item1)) { 
     answer = YES; 
    } 
    if (action == @selector(item2)) { 
     answer = YES; 
    } 
    return answer; 
} 

कहाँ item1 और item2 हैं: आप कॉपी/पेस्ट/कट/'या UITextView रों' हटाएँ/चयन/SelectAll आप अपने UITextField के लिए निम्न कोड जोड़ने की आवश्यकता होगी रों प्रतिनिधि को देखने के लिए नहीं चाहते हैं UIMenuController.menuItems में वस्तुओं के नाम।

मेरे अनुभव में यदि आप UITextView का उपयोग कर रहे हैं तो कॉपी, पेस्ट, कट और चुनें सभी मेनू आइटम बने रहेंगे, इस मामले में UITextView के उप-वर्ग में निम्न कोड जोड़ें।

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender { 
    if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(selectAll:)) { 
      return YES; 
    } 
} 
+0

मैं उन विकल्पों को अक्षम नहीं करना चाहता, मुझे दो और कस्टम विकल्प जोड़ने की आवश्यकता है। – Melina

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