目前,我想要寫的iPhone音樂播放器應用程序錯誤的細胞執行。部分設計是可以在單個歌曲列表中滑動以顯示其他選項(如在iOS 7 Mail.app中)。的UITableView didSelectRow上即使touchesCancelled稱爲定製的UITableViewCell包含自定義的UIScrollView
我在一個自定義的UITableViewCell的幫助下實現了這個功能,UITableViewCell包含一個自定義的UIScrollView和兩個UIViews(一個用於實際內容,另一個用於「背景菜單」),其工作方式與預期相當。隨着UIScrollView中似乎採取TableViewCells所有的觸動,這禁用選項實際播放一首歌曲,我轉發的觸摸事件(與建議here爲例):
CellScrollView.m
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
if (![self isDragging]){
[[self superview] touchesBegan:touches withEvent:event];
}
[super touchesBegan: touches withEvent: event];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
if (![self isDragging]){
[[self superview] touchesMoved:touches withEvent:event];
}
[super touchesMoved: touches withEvent: event];
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
if (![self isDragging]){
[[self superview] touchesCancelled:touches withEvent:event];
}
[super touchesCancelled: touches withEvent: event];
}
- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event{
if (![self isDragging]){
[[self superview] touchesEnded:touches withEvent:event];
}
[super touchesEnded: touches withEvent: event];
}
現在我的問題如下: 當我按住列表中的單元格並開始滾動時,mediaplayer不會開始播放(如預期的那樣)。但是,當我點擊列表中的任何其他條目時,並不是我點擊的標題被播放,而是我第一次按住然後開始滾動。這隻會發生,如果我不滾動和點擊並按住(在滾動期間提出了「滾動期間的意想不到的觸摸階段」,我猜這是什麼最終取消輕敲和停止滾動-保持)。
有什麼辦法來糾正這種行爲(一切工作正常,如果我只是用普通的UITableViewCell所以我想休息的UIScrollView一切)?
感謝您的詳細回覆。同時,我切換到UIPanGestureRecognizer以「手動」滾動我的視圖。目前,我會堅持使用這個解決方案,但是現在再次使用scrollView似乎是可能的,我可能會再次嘗試。 – dorbeetle