2011-02-09 66 views
0

我有一個網格的各種UIButtons(5 x 5)...現在我有一個UIControlEventTouchUpInside ..這意味着當用戶想要選擇各種按鈕需要按每一個,一個一個...UIButton網格激活同時拖動

當用戶在各種按鈕上拖動手指時,如何激活按鈕。

這裏是我使用的代碼:

for (i = 0; i < num_caselles; i++) 
{ 
    lletra = [[UIButton alloc] initWithFrame:CGRectMake(POS_H, POS_V, mida_boto, mida_boto)]; 
    [botones addObject: lletra]; 
    [lletra setTitle: [caselles objectAtIndex: i] forState: UIControlStateNormal]; 
    lletra.tag = i; 
    [lletra addTarget:self action:@selector(lletraPitjada:) forControlEvents: UIControlEventTouchUpInside]; 
} 

回答

0

好吧我終於解決了這個辦法:

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


    for(UIButton*boton in botones) 
    { 
    if(CGRectContainsPoint([boton frame], location) && boton.tag != boton_anterior) 
    { 
     boton_anterior = boton.tag; 
     [self lletraPitjada:boton]; 
    } 
    } 

} 

我重寫/評論按鈕組的行動,因爲沒有工作對我來說:

//[lletra addTarget:self action:@selector(lletraPitjada:) forControlEvents: UIControlEventTouchDragEnter]; 

和去活的用戶交互,因爲UITouch不喜歡按鈕:

lletra.userInteractionEnabled = NO; 

而且voilà...所有工作都很完美...

0

您也可以反應:

UIControlEventTouchDragEnter或 UIControlEventTouchDragExit

處理這些情況。

+0

是的我也試過這個事件,但沒有工作,只有第一個按鈕響應拖動,其他我不受影響,而我拖過去... – david 2011-02-11 08:31:06