1

タッチを削除せずに(つまり、タッチをドラッグして)あるボタンから別のボタンに切り替えると、約20個のボタンがあるアプリを作成する必要があります。そのボタンのフレーム領域に入ったときに関数を呼び出したいです。
例:
ここに画像の説明を入力
ボタンのタグ 10 からボタンのタグ 11 にタッチをドラッグすると、ボタンのタグ 11 セレクター メソッドを呼び出す必要があります。

4

2 に答える 2

1

ではできないと思いますUIButtons。しかし、これについて1つの提案があります。それらを設定するImages代わりに追加すると、座標と比較してメソッドを呼び出すことができます。ButtonsuserIntractionEnable:NOtouchesMoved@selectorX,Y

私はこれのために小さなコードを書きました -

//I added your example image on my self.view with a view
//of 320x140 and set it userIntractionEnabled:NO
//Now in touchMoved: method did this..

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

    //checking the touch is in self.view or not
    if([touch view] == self.view)
    {
        //This is like a 2D array, So you have to follow row and column pattern.
        if((pt.y>=0.0 && pt.y<=70.0))//For First Row
        {
            //These 7 are FirstRow Columns
            if(pt.x>=0.0 && pt.x<=45.0){
             NSLog(@"Method - 10");
            }
               if(pt.x>=46.0 && pt.x<=90.0){
                NSLog(@"Method - 11");
            }
            if(pt.x>=91.0 && pt.x<=135.0){
                NSLog(@"Method - 12");
            }

            if(pt.x>=136.0 && pt.x<=180.0){
                NSLog(@"Method - 13");
            }

            if(pt.x>=181.0 && pt.x<=225.0){
                NSLog(@"Method - 14");
            }

            if(pt.x>=226.0 && pt.x<=270.0){
                NSLog(@"Method - 15");
            }

            if(pt.x>=271.0 && pt.x<=315.0){
                NSLog(@"Method - 16");
            }

        }
        //Row change this is for Second Row
        if((pt.y>=71.0 && pt.y<=140.0))
        {
            //These 7 are SecondRow Columns
            if(pt.x>=0.0 && pt.x<=45.0){
            NSLog(@"Method - 17");
            }
            if(pt.x>=46.0 && pt.x<=90.0){
                NSLog(@"Method - 18");
            }
            if(pt.x>=91.0 && pt.x<=135.0){
            NSLog(@"Method - 19");
            }

            if(pt.x>=136.0 && pt.x<=180.0){
                NSLog(@"Method - 20");
            }

            if(pt.x>=181.0 && pt.x<=225.0){
            NSLog(@"Method - 21");
            }

            if(pt.x>=226.0 && pt.x<=270.0){
            NSLog(@"Method - 22");
            }

            if(pt.x>=271.0 && pt.x<=315.0){
                NSLog(@"Method - 23");
            }

        }

    }
}

これがあなたを助けることを願っています!!!! :-)

于 2012-07-13T07:50:01.653 に答える
1

以下の方法でイベントを登録する必要があります。

 [button addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchDragEnter];
于 2012-07-13T06:46:03.643 に答える