Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题

时间:2022-12-08 21:57:48

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


一个RPG游戏转换到Xcode7.2下发现一个问题,原来可以上下滚动的CCTableView控件现在不可以滚动了.

控制台中可以看到输出的警告:

WARNING: A Gesture recognizer (<CCTapDownGestureRecognizer: 0x611000042e40; baseClass =
 UIGestureRecognizer; state = Possible; view = <CCGLView
<CCTableView 0x616000030380>)>>) was setup in a storyboard/xib to be added to more than one view (->
<CCGLView: 0x61500000d500; frame = (0 0; 568 320);
gestureRecognizers = <NSArray: 0x6040000c4850>; layer =
<CAEAGLLayer: 0x603000013840>>) at a time, this was never
 allowed, and is now enforced. Beginning with iOS 9.0 it
 will be put in the first view it is loaded into.

貌似在iOS 9.x后原来可以在多个view中添加的手势识别器只能在第一个视图中起作用了,估计是CCTableView中使用了这个特性.

深入Cocos2D代码修改,目前还没有这个精力,遂采用变通方法,在CCTableView旁边加入一个滚动条来实现滚动效果.

有2种添加滚动条的方法,你可以在SpriteBuilder中的添加:

Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题

你也可以在代码中手动添加,后者的*度更高些,本猫采用后一种方法,实现效果如下:

Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题

而原来在iOS 9之前的系统中,滚动是有效的,所以可以根据系统自动显示或隐藏滚动条以实现最佳效果.