سؤال

لدي حاليا تطبيق بسيط للغاية حيث التفاعل الوحيد هو هز iPhone. ومع ذلك ، في النهاية ، فإن الشاشة تتصاعد والانقانات التلقائية لأن iPhone لا يحصل على أي أحداث تعمل باللمس. كنت أتساءل عما إذا كانت هناك طريقة لإعادة ضبط مهلة القفل التلقائي عند اهتزازها؟

أعلم أنه لتعطيل القفل التلقائي تمامًا ، سأفعل هذا:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

لكني لا أريد تعطيله تمامًا ؛ إذا لم يتم استخدام iPhone بشكل شرعي ، فيجب قفلًا تلقائيًا كما هو متوقع.

شكرا لمساعدتك.

هل كانت مفيدة؟

المحلول

يمكنك تبديل قيمة [UIApplication sharedApplication].idleTimerDisabled استنادًا إلى قيمة Nstimer أو لفتة سلوكية (هز الهاتف). يمكن ضبطه على YES/NO عدة مرات في التطبيق الخاص بك.

نصائح أخرى

إليك الرمز الذي أستخدمه في تطبيقي. القليل من الخلفية: يحتوي تطبيقي على خادم ويب مدمج حتى يتمكن المستخدمون من الوصول إلى البيانات من متصفح عبر WiFi وفي كل مرة يصل فيها الطلب إلى الخادم ، أقوم بتمديد مؤقت القفل (لمدة لا تقل عن دقيقتين في هذه الحالة ؛ لا تزال تحصل على مقدار الوقت الافتراضي إضافي على مرة واحدة إعادة تمكين).

// 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];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top