2014-11-05 110 views
3

我有一个应用程序,与iOS 8.0完美地工作,直到切换到8.1。当我创建一个SpriteKit游戏里面一个UITextView我得到以下错误:UITextSelectionView名称无法识别的选择器使用SpriteKit和UITextView

-[UITextSelectionView name]: unrecognized selector sent to instance 0x7f96ee6bdfa0 

,如果我在代码中创建对象或将一个UITextView在我的厦门国际银行文件中出现。

层次结构是这样的:

的UIViewController(self.view是SKView) - > UIView的 - > UITextView的

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     UITextView *test = [[UITextView alloc] init]; 
    } 
    return self; 
} 

任何想法是什么问题是,为什么它出现如此突然?

+0

当您启用Zombie Objects时会发生什么? – 2014-11-05 22:09:09

+0

它什么也没说。 – 2014-11-05 22:28:20

+0

你的异常堆栈跟踪在哪里? – 2014-11-05 23:04:22

回答

5

问题最终成为使用performSelector:withObject:afterDelay:在SpriteKit场景中。一旦我用SKAction替换了这些事件,它解决了UITextView问题。

旧代码:

[self performSelector:@selector(methodName) withObject:nil afterDelay:1.0]; 

新代码:

SKAction *action = [SKAction performSelector:@selector(methodName) onTarget:self]; 
SKAction *wait  = [SKAction waitForDuration:1.0]; 
SKAction *sequence = [SKAction sequence:@[wait, action]]; 
[self runAction:sequence]; 
+0

嘿,伟大的提示!一个问题,但。你认为,如果我在SKScene中调用performSelector,但是在UIKit对象上,它仍然会导致问题?我似乎无法自己重新创建崩溃。 – 2015-02-26 08:31:09

0

我有一个类似的问题与崩溃的iOS 8.1折。但是,调用[UITextSelectionView名称]时不会崩溃,而是日志告诉我它在[GKLocalPlayerInternal name]上崩溃。

奇怪的是,当我将[self performSelector ...](其中self是一个SKNode)替换为[SKAction performSelector ...]时,问题就消失了。

在iOS 8.1中似乎不是一个非常明显的错误。

0

我发现一个解决方案是有效的。

UITextView *textView = [UITextView .....]; 
**textView.selectable = NO;** 
相关问题