سؤال

هذا هو متعة واحدة ... لدي تطبيق يحتوي على شاشة مساعدة ويتم عرضه كمنظر مشروط. تتمتع العرض الرئيسي بإجراء يحدث عندما يهتز الجهاز. لا أريد أن يحدث الإجراء (الأصوات لعبت) عند عرض شاشة المساعدة.

لقد حاولت بعض الأشياء ... هنا هو رمزي:

لعرض شاشة المساعدة:

- (IBAction)helpButtonPressed:(id) sender {
    helpViewController = [[HelpViewController alloc] init]; 
    [self presentModalViewController:helpViewController animated:YES];
}

لتحرير شاشة المساعدة:

- (IBAction)buttonPressed:(id) sender {
    [self dismissModalViewControllerAnimated:YES];
}

حاولت ما يلي دون نجاح:

if ([helpViewController.view isHidden ]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}


if ([helpViewController isViewLoaded]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}

if ([self isViewLoaded]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}

ما كنت أفكر فيه هو إذا كانت هناك وظيفة للسماح لي بالاكتشاف ما إذا كان عرض المساعدة يظهر، سأعود دون تشغيل الأصوات عند اهتز الجهاز ....

أيه أفكار؟

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

المحلول

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

if(self.modalViewController != nil) {
    // Modal view controller is active; do nothing
    NSLog(@"Shake -- helpView is loaded");
    return;
} else {
    // No modal view controller; take action
    NSLog(@"Shake -- helpView is not loaded");
    [self performSomeAction];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top