有一個二級界面,在ipad4下面放大到1.6倍,直接對最外層的CCLayer縮放的,裏面包含有CCTableView。結果運行的時候沒法選中到最後一個標籤,不管總的標籤是2個仍是更多,單步調試,發現到ccTouchEnded的時候判斷的點擊範圍有問題,修改爲下面的就行了。具體緣由沒有時間解釋了,你們看看估計也明白了。this
原:spa
void CCTableView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { if (!this->isVisible()) { return; } if (m_pTouchedCell){ CCRect bb = this->boundingBox(); bb.origin = m_pParent->convertToWorldSpace(bb.origin); if (bb.containsPoint(pTouch->getLocation()) && m_pTableViewDelegate != NULL) { m_pTableViewDelegate->tableCellUnhighlight(this, m_pTouchedCell); m_pTableViewDelegate->tableCellTouched(this, m_pTouchedCell); } m_pTouchedCell = NULL; } CCScrollView::ccTouchEnded(pTouch, pEvent); }
新:調試
void CCTableView::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { if (!this->isVisible()) { return; } if (m_pTouchedCell){ CCPoint touchLocation = pTouch->getLocation(); // Get the touch position touchLocation = m_pParent->convertToNodeSpace(touchLocation); CCRect bb = this->boundingBox(); //bb.origin = m_pParent->convertToWorldSpace(bb.origin); if (bb.containsPoint(touchLocation) && m_pTableViewDelegate != NULL) { m_pTableViewDelegate->tableCellUnhighlight(this, m_pTouchedCell); m_pTableViewDelegate->tableCellTouched(this, m_pTouchedCell); } m_pTouchedCell = NULL; } CCScrollView::ccTouchEnded(pTouch, pEvent); }