2014-02-15 28 views
1

我試圖在我的視圖控制器中使用自定義的UIControl。我的自定義類的子類的UIControl並通過下面的代碼cancelTrackingWithEvent被調用甚至接觸委託返回YES

我已經實現以下哪個返回YES,以確保持續觸摸代表分配情況爲我定製的控制和對我的視圖控制器的觀點增加。

- (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{ 
     [super beginTrackingWithTouch:touch withEvent:event]; 
     return YES; 
    } 

    - (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{ 
     [super continueTrackingWithTouch:touch withEvent:event]; 
     return YES; 
    } 

    - (void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{ 
     [super endTrackingWithTouch:touch withEvent:event]; 
    } 

    - (void)cancelTrackingWithEvent:(UIEvent *)event 
    { 
     NSLog(@"Touch cancelled"); 
    } 

但是- (void)cancelTrackingWithEvent:(UIEvent *)event當我跟蹤時會被調用。之後,我應該拿起我的手指並再次拖動。那麼只有我收到開始並繼續跟蹤代表

回答

1

根據你的問題,在跟蹤時,cancelTrackingWithEvent:被調用。對。用Gesture回電查看您的視圖或超級視圖。如果您已添加pan Gesture,則此類問題將會增加。那是你的控制觸摸將begin and get tracked upto this tracking change to panning

要解決此問題,請將標記設置爲您的視圖並取消手勢調用,如下所示。

在您的視圖創建

yourView.tag = CANCELVIEWTAG; 

取消手勢觸摸,如果在您的視圖發生。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 

    if (touch.view.tag == CANCELVIEWTAG) { 
     return NO; 
    } 
    return YES; 
}