2010-02-07 54 views

回答

0

您當然可以發現當前正在觸摸事件的'視圖'即使是按鈕也會被拖動。您還可以使用界面構建器中按鈕的「觸摸拖動輸入」連接。選擇按鈕時按cmd + 2查看連接選項卡。

1

是的。

在您的.h文件中

IBOutlet UIButton *aButton; 

在您.m文件

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event touchesForView:self.view] anyObject]; 

    CGPoint location = [touch locationInView:touch.view]; 

    if(CGRectContainsPoint(p1.frame, location)) 
    { 
     if (!p1.isHighlighted){ 
      [self pP01]; 
      [p1 setHighlighted:YES]; 
    } 
}else { 
     [p1 setHighlighted:NO]; 
    } 
    // 
    if(CGRectContainsPoint(p2.frame, location)) 
    { 
     if (!p2.isHighlighted){ 
      [self pP02]; 
      [p2 setHighlighted:YES]; 
     } 
    }else { 
     [p2 setHighlighted:NO]; 
    } 
    if(CGRectContainsPoint(p3.frame, location)) 
    { 
     if (!p3.isHighlighted){ 
      [self pP03]; 
      [p3 setHighlighted:YES]; 
     } 
    }else { 
     [p3 setHighlighted:NO]; 
    } 
} 

最後,在界面生成器,連接您的按鈕 'A按鈕' 和關閉「用戶交互啓用「您的按鈕。 這很重要,因爲它允許touchesMoved處理它。

我已經調整了上面的代碼來檢查按鈕突出顯示的狀態。當您在區域內拖動手指時,這將阻止它多次觸發按鈕。

爲了讓您的「鋼琴鍵」當你點擊他們的工作,用-(void)touchesBegan

要重新設置您的按鈕突出國家= NO;,使用-(void)touchesEnded

我不得不找出確切的同樣的事情你在之後。我不明白Touch Drag Enter

所以爲了避免多個帖子的主題,請檢查我的問題和答案。

question 1

question 2

+0

heey .. THX你的答案,但我得到這個警告「爲成員的要求'view'in的東西不是一個結構或聯合」經行UITouch *觸摸= [[事件....! 我改變了這一行UITouch * touch = [[event allTouches] anyObject];它的工作。但是.. =)如果我按下我的按鈕,它應該聽起來像一個音符。但現在我不能按,只能滑動。如果我滑動我的按鈕,音符不止一次發出聲音。你能幫助我嗎?謝謝您的回答。我現在纔看到它。 Thx – user268086 2010-02-19 12:56:06

+0

請參閱我更新的帖子。 – Jonathan 2010-02-19 23:30:32