2009-06-21 16 views
5

मेरे पास वर्तमान में एक बहुत ही सरल ऐप है जिसके लिए एकमात्र बातचीत आईफोन को हिला रही है। हालांकि अंततः स्क्रीन मंद हो जाती है और ऑटो-लॉक आईफोन को कोई टच इवेंट नहीं मिल रहा है। मैं सोच रहा था कि हिलाने पर ऑटो-लॉक टाइम-आउट रीसेट करने का कोई तरीका है या नहीं?विलंब करना लेकिन आईफोन ऑटो-लॉक को अक्षम नहीं करना

मुझे लगता है कि ऑटो-लॉक निष्क्रिय करने के लिए पूरी तरह से मैं यह कर होगा पता:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ] 

लेकिन मैं नहीं है वास्तव में यह पूरी तरह से निष्क्रिय करना चाहते हैं; अगर आईफोन वैध रूप से इस्तेमाल नहीं किया जा रहा है तो इसे अपेक्षित रूप से ऑटो-लॉक करना चाहिए।

आपकी मदद के लिए धन्यवाद।

+2

मैंने सोचा कि बच्चे के शेक पर प्रतिबंध लगा दिया गया है। –

उत्तर

11

आप अपने स्वयं के एनएसटीमर या व्यवहार संबंधी इशारे (फोन को हिलाकर) के मूल्य के आधार पर [UIApplication sharedApplication].idleTimerDisabled के मान को टॉगल कर सकते हैं। इसे आपके आवेदन में कई बार YES/NO पर सेट किया जा सकता है।

+0

ठीक है, मैं इसे जाने दूंगा। मैंने सोचा कि बस रीसेट IdleTimer विधि या थोड़ा क्लीनर कुछ हो सकता है। –

6

यहां मेरे द्वारा उपयोग किए जाने वाले कोड का उपयोग किया गया है। पृष्ठभूमि का एक बिट: मेरे ऐप में एक अंतर्निहित वेब सर्वर है, इसलिए उपयोगकर्ता वाईफ़ाई पर ब्राउज़र से डेटा तक पहुंच सकते हैं और जब भी सर्वर में अनुरोध आता है, तो मैं लॉक टाइमर का विस्तार करता हूं (इस मामले में कम से कम 2 मिनट के लिए; एक बार फिर से सक्षम होने पर आपको अभी भी डिफ़ॉल्ट समय जोड़ा जाता है)।

// disable idle timer for a fixed amount of time. 
- (void) extendIdleTimerTimeout 
{ 
    // cancel previous scheduled messages to turn idle timer back on 
    [NSObject cancelPreviousPerformRequestsWithTarget:self 
     selector:@selector(reenableIdleTimer) 
     object:nil]; 
    // disable idle timer 
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; 

    // re-enable the timer on after specified delay. 
    [self performSelector:@selector(reenableIdleTimer) withObject:nil afterDelay: 60 * 2]; 

} 

- (void) reenableIdleTimer 
{ 
sharedApplication].idleTimerDisabled); 
    [NSObject cancelPreviousPerformRequestsWithTarget:self 
     selector:@selector(reenableIdleTimer) 
     object:nil]; 
    // disable idle timer 
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; 
} 
+0

यह कोड बहुत उपयोगी है, हमने इसे सीधे हमारे ऐप में गिरा दिया, धन्यवाद! बस एफवाईआई, आईओएस 5.0.1 चलाने वाले आईपैड 2 के साथ मेरा परीक्षण यह सुझाव देता है कि निश्चित समय वास्तव में न्यूनतम निष्क्रिय समय बन जाता है - यानी। यदि उपयोगकर्ता की कॉन्फ़िगर लॉक विलंब कम है, तो स्क्रीन सेट के बाद भी तुरंत लॉक हो जाती है DileTimerDisabled: कोई कॉल नहीं। यदि उपयोगकर्ता लॉक टाइम निश्चित समय से अधिक लंबा है, तो उपर्युक्त कोड का कोई प्रभाव नहीं पड़ता है। – JosephH

+0

मेरा कोड प्री-आईओएस 4 है, इसलिए यह अच्छा है कि आपने आईओएस के नए संस्करणों पर अपने अवलोकन प्रदान किए। – wkw

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