2010-10-02 4 views
5

क्या वॉल्यूम इंडिकेटर व्यू फॉर्म को रोकने के लिए कोई तरीका है यदि आप वॉल्यूम अप/डाउन हार्डवेयर बटन दबाते हैं?आईफोन एसडीके - हार्डवेयर बटन दबाए जाने पर वॉल्यूम सूचक दृश्य को कैसे अक्षम करें?

केवल डेमो ऐप के लिए इसकी आवश्यकता है। तो विधि को ऐप स्टोर सुरक्षित होने की आवश्यकता नहीं है।

+1

लोगों को इसका जवाब देने से पहले आप अपने अन्य सवालों के कुछ जवाब स्वीकार करना चाहेंगे। –

उत्तर

2

आईआईआरसी, MPVolumeView की उपस्थिति वॉल्यूम सूचक ओवरले के प्रदर्शन को रोकती है। इसे प्रासंगिक दृश्य चिपकाकर देखें और यह मामला है या नहीं।

तो फिर तुम यह प्रभावी रूप से अदृश्य बनाने के लिए विभिन्न चाल की कोशिश कर सकते हैं:

  • यह छिपा बनाओ (या एक superview छिपा हुआ बना)।
  • अपना अल्फा (या पर्यवेक्षक का अल्फा) 0, या 0.01, या तो सेट करें।
  • ले जाएँ यह ऑफ स्क्रीन
  • ले जाएँ यह लगभग ऑफ स्क्रीन (जैसे इसलिए केवल ऊपरी-बाएं पिक्सेल स्क्रीन पर है)
  • एक और दृश्य के तहत चिपका।
  • क्लिप के साथ एक सबव्यू में चिपकाएं, बाउंड्स = चालू करें, और इसे उन सीमाओं के बाहर ले जाएं
  • वॉल्यूम व्यू.लेयर.मास्क को एक नए (इस प्रकार पूरी तरह से पारदर्शी) कैलियर पर सेट करें। वॉल्यूम देखें View.userInteractionEnabled = नहीं।

इनमें से सभी सैद्धांतिक रूप से MPVolumeView द्वारा पता लगाए जा सकते हैं, लेकिन मुझे संदेह है कि उनमें से कुछ काम करेंगे।

+0

इसकी पुष्टि कर सकते हैं। एक MPVolumeView दिखाई देना चाहिए (ऐप्पल वास्तव में यह जांचने लगता है), तो वॉल्यूम ओवरले नहीं दिखाया गया है। MPVolumeView ऑफ स्क्रीन (उदा। -1000, -1000) को स्थानांतरित करने का सबसे आसान समाधान प्रतीत होता है। – DarkDust

4

ऐसा नहीं है कि तरह काम करता है:

  • एक मूक फ़ाइल
  • अपने मुख्य दृश्य
  • करने के लिए एक मात्रा देखें जोड़ने खेलने

जैसे

NSString *url = [[NSBundle mainBundle] 
         pathForResource:@"silent" ofType:@"mp3"]; 
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] 
         initWithContentURL:[NSURL URLWithString:url]]; 
[moviePlayer play]; 

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: 
         CGRectMake(0, 0, 1, 1)] autorelease]; 
[self.view addSubview:volumeView]; 
[self.view sendSubviewToBack:volumeView]; 
वापस करने के लिए दृश्य भेजने
+0

आप महोदय, एक प्रतिभा है। धन्यवाद यह काम करता है! – GeneCode

1
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //get current volume level 
    oldVolume= [[MPMusicPlayerController applicationMusicPlayer] volume]; 

    //hide volume indicator   
    MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: 
          CGRectMake(0, 0, 1, 1)] autorelease]; 

    musicController=[MPMusicPlayerController applicationMusicPlayer]; 
    [self.view addSubview:volumeView]; 
    [self.view sendSubviewToBack:volumeView]; 
    [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(volume) userInfo:nil repeats:YES]; 
} 

- (void)volume 
{ 
    if ([musicController volume]>oldVolume || [musicController volume]<oldVolume) { 
    [musicController setVolume:oldVolume]; 
    // do some stuff here and the volume level never changes, just like volume action in camera app 
    } 
}