хорошо, честно говоря, я бы поставил оконную раму на более высокий z, чем прокручиваемый объект ... если у вас нет, возможно, вам придется обрезать и изменять спрайт на лету для содержимого окна, неприятно (по крайней мере, это тот, который как я мог это сделать, без дальнейших исследований).
так:
// initialize this logic somewhere useful
CCNode scrollableContent;
CCSprite windowFrame;
BOOL isScrollPossible;
[self addChild:scrollableContent z:0];
[self addChild:windowFrame z:1];
// and in the touch delegate methods
-(void) ccTouchBegan:{
check if the touch happened in the window, if yes, scrolling is possible
}
-(void) ccTouchMoved:{
if (isScrollPossible) {
compute displacement
compute nextPosition for scrollableContent node;
if ( nextPosition in window ) {
// make scrollableContent follow touch
scrollableContent.position=nextPosition;
} else {
// stop any further scrolling until the next 'touch began'
isScrollPossible=NO;
}
} else {
// scroll not possible, do nothing
}
}
Это основная идея. Возможно, вам понадобится логика ограничения, чтобы предотвратить распространение scrollableContent за края окна.
Отредактировано для опечаток.