2013-10-10 144 views
0

我在我的項目中有一個UIButton,並且在點擊一個按鈕後,我在該按鈕的頂部顯示一個UIView,以便該按鈕在該時間保持隱藏狀態。當我按住該按鈕並將手指移動到重疊的UIView上時,我想在那段時間獲得touchesmoved事件。至於我所做的是這樣的:如何在iphone中點擊按鈕後獲得觸摸事件?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 

UITouch *touch = [touches anyObject]; 

    if ([touch view] == uiview) 
    { 

     NSLog(@"Touches moved"); 
    } 

,但是當我把按鈕按下的是隱藏在UIView出現和UIView的推移隱藏,當我鬆開按鈕它不被調用。有什麼建議嗎?

+0

你可以顯示一些代碼如何使這個視圖和隱藏按鈕?這會更容易。 – Unheilig

+0

我在該按鈕頂部的xib中採用了uiview,並將其隱藏起來。當我點擊按鈕時,uiview變得可見,當我釋放按鈕時,uiview再次變得不可見。 – Reyjohn

回答

3

我不明白你想做什麼,但我會建議你使用UIGestureRecognizers並添加手勢識別器到你的按鈕。

請嘗試使用此代碼。我在我開發的紙牌遊戲中使用過這個。使用長按手勢移動卡片。希望我幫助。

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(addLongpressGesture:)]; 
[longPress setDelegate:self]; 
[YOUR_BUTTON addGestureRecognizer:longPress]; 

- (void)addLongpressGesture:(UILongPressGestureRecognizer *)sender { 

UIView *view = sender.view; 

CGPoint point = [sender locationInView:view.superview]; 

if (sender.state == UIGestureRecognizerStateBegan){ 

     // GESTURE STATE BEGAN 

} 
else if (sender.state == UIGestureRecognizerStateChanged){ 

    //GESTURE STATE CHANGED/ MOVED 

    CGPoint center = view.center; 
    center.x += point.x - _priorPoint.x; 
    center.y += point.y - _priorPoint.y; 
    view.center = center; 

    // This is how i drag my views 
    } 

else if (sender.state == UIGestureRecognizerStateEnded){ 

     //GESTURE ENDED 
} 
+1

它爲我工作,謝謝! – Reyjohn

+0

傑出兄弟! –

0

您需要爲重疊的UIView設置view.userInteractionEnabled = NO。 這會將操作發送到按鈕。

相關問題