我在這裏讀了兩個關於這個問題的問題,兩者都有相同的答案。建議的解決方案是創建UIScrollView對象,然後將其添加到目標場景的didMoveToView中的SKScene的父視圖中,在willMoveFromView:中將其刪除。使用UIKit的UIScrollView和SpriteKit
這是目標場景的代碼,我實現:
@interface MQSSMakerScene()
@property BOOL contentCreated;
@property MQSSMakerWorkspaceLayer *workspaceLayer;
@property MQSSMakerDockLayer *dockLayer;
@property UIScrollView *scrollView;
@end
@implementation MQSSMakerScene
- (id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size]) {
CGSize layerSize = CGSizeMake(944, 140);
CGPoint layerPosition = CGPointMake(40, 768-(140+30));
CGRect viewFrame = CGRectMake(layerPosition.x, layerPosition.y, layerSize.width, layerSize.height);
_scrollView = [[UIScrollView alloc] initWithFrame:viewFrame];
_scrollView.contentSize = CGSizeMake(2000, 120);
_scrollView.scrollEnabled = YES;
_scrollView.showsHorizontalScrollIndicator = YES;
_scrollView.backgroundColor = [UIColor brownColor];
}
return self;
}
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
if(!self.contentCreated) {
[self createSceneContents];
self.contentCreated = YES;
}
[self.view addSubview:_scrollView]; // --> WHERE IT'S BEING ADDED
}
- (void)willMoveFromView:(SKView *)view
{
[super willMoveFromView:view];
[_scrollView removeFromSuperview]; // --> WHERE IT'S BEING REMOVED
}
- (void)createSceneContents
{
self.backgroundColor = [UIColor colorWithHue:.237 saturation:.56 brightness:.46 alpha:1];
self.scaleMode = SKSceneScaleModeAspectFill;
[self addChild:[self newMakerLayout]];
}
- (SKNode *)newMakerLayout
{
SKNode *mainLayout = [[SKNode alloc] init];
self.workspaceLayer = [[MQSSMakerWorkspaceLayer alloc] init];
self.dockLayer = [[MQSSMakerDockLayer alloc] init];
[mainLayout addChild:self.workspaceLayer];
[mainLayout addChild:self.dockLayer];
MQSSStoryObject *ob1 = [[MQSSStoryObject alloc] initWithImageNamed:@"maker-1.png"];
[self.workspaceLayer addChild:ob1];
return mainLayout;
}
@end
請注意,在一個按鈕點擊,當用戶應該去這一幕從家庭現場。現在的問題是,一旦我添加一行:
[self.view addSubview:_scrollView];
到UIScrollView的對象添加到這個場景中,應用程序沒有更多的去這個場面,取而代之的是的UIScrollView添加到主場景我從轉變。在轉換到另一場景時,它也不會刪除它。一旦我將這一行註釋掉,一切都按預期工作,顯然不需要顯示UIScrollView。
我被卡住了。任何幫助或建議是高度讚賞。謝謝!
這是我正面臨的確切問題,只有使用UITextView。它真的很瘋狂......似乎不能讓我的谷歌foo來幫助我。你找到解決方案嗎? – Canis