Представьте себе такой сценарий (некоторый код ниже):Лаг/Задержка ModalViewController уволиться после загрузки с видом XIb над SKView
- У меня есть SKView на ViewController.
- Я загружаю xib-просмотр (внешний .xib-файл) поверх skview (вид xib - это похоже на небольшое меню, которое не покрывает экран полностью).
- Затем я показываю контроллер вида по модулю от контроллера SKView
- Когда я отклоняю этот модальный контроллер, есть временное отставание на каждом втором увольнении (так что я показываю его в порядке, увольняю, это нормально, затем повторяю , есть задержка, затем повтор, работает нормально, затем повторюсь, есть задержка ... и т. д.)
- Если я не использую SKView (если я только что использовал UIView), эта задержка не произойдет. Это происходит только при использовании SKView.
Что может быть причиной этого? Вот упрощенный код, который производит эту проблему:
@implementation NOZTestController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// button that loads xib view onto the current skview
UIButton *showxib = [[UIButton alloc] initWithFrame:CGRectMake(20, 80, 280, 30)];
[showxib setTitle:@"Add xib view here" forState:UIControlStateNormal];
[showxib addTarget:self action:@selector(showxibTapped) forControlEvents:UIControlEventTouchUpInside];
// button that loads a view controller programmatically
UIButton *showmodal = [[UIButton alloc] initWithFrame:CGRectMake(20, 120, 280, 30)];
[showmodal setTitle:@"Show modal" forState:UIControlStateNormal];
[showmodal addTarget:self action:@selector(showmodalTapped) forControlEvents:UIControlEventTouchUpInside];
self.view = [[SKView alloc] initWithFrame:self.view.frame];
SKView *v = (SKView *)self.view;
//UIView *v = self.view;
[v addSubview:showxib];
[v addSubview:showmodal];
}
- (void)showxibTapped
{
// displays the xib view
[NOZPlayAgainView presentOnView:self.view inRect:CGRectMake(20, 200, 280, 160) withDelegate:self];
}
- (void)showmodalTapped
{
// displays the modal window
UIViewController *vc = [[UIViewController alloc] init];
UIButton *dismiss = [[UIButton alloc] initWithFrame:CGRectMake(40, 40, 240, 40)];
[dismiss setTitle:@"Dismiss" forState:UIControlStateNormal];
[dismiss addTarget:self action:@selector(dismissModal) forControlEvents:UIControlEventTouchUpInside];
[vc.view addSubview:dismiss];
[self presentViewController:vc animated:YES completion:nil];
}
- (void)dismissModal
{
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
}
@end
Вы нашли обходное решение? – defense2000x