سؤال

لدي تطبيق iPhone الذي أقوم بتحويله حاليًا إلى ملف عالمي ثنائي للعمل مع iPad. لقد نجحت في تنفيذ كل ما أحتاجه من حيث التخطيط بحيث يتم الآن دعم وظائف المناظر الطبيعية الكاملة في تطبيقي (في السابق استخدمت وضع الصورة في المقام الأول لعرض المحتوى).

لكن ، لدي مشكلة غريبة واحدة ، ولا يحدث إلا في وضع المناظر الطبيعية: عندما أدفع وحدة تحكم العرض على المكدس ، يستغرق الأمر صنابين على زر الظهر للعودة إلى وحدة تحكم العرض السابقة! يعرض النقر الأول عرضًا فارغًا ، ولكن مع نفس الاسم على زر التنقل في الجانب الأيسر ، يعيد النقر الثاني وحدة التحكم إلى العرض السابق كما ينبغي.

ليس لدي جهاز iPad للاختبار ، لذلك أنا أعتمد على جهاز المحاكاة. لا تظهر المشكلة على iPhone ولا تظهر إذا قمت بالتناوب إلى وضع الصورة.

يتكون تطبيقي من TabbarController مع تحكم في التنقل من أجل VC:

//application delegate
- (void)applicationDidFinishLaunching:(UIApplication *)application
//....
WebHelpViewController *vc8 = [[WebHelpViewController alloc] init];
UINavigationController *nv8 = [[UINavigationController alloc] initWithRootViewController:vc8];

[self.tabBarController setViewControllers:[NSArray arrayWithObjects:nv1,nv2,nv3,nv4,nv5,nv6,nv7,nv8,nil]];

لتنفيذ قدرة المناظر الطبيعية ، يتم تجاوز UitabbarController على Autorotate عند الاقتضاء:

//CustomTabBarController.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return [[(UINavigationController *)self.selectedViewController topViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

... يعمل بشكل جيد. أتنقل إلى طرق عرض جديدة باستخدام هذه الطريقة

SomeViewController *vc = [[SomeViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];

هل هذا مجرد خطأ محاكاة؟ كيف يمكنني حل هذه المشكلة؟

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

المحلول

يبدو وكأنه آخر ViewController يستجيب ل:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

تحقق من هذا أولاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top