-5

私のコードでは、配列にポイントを作成し、その配列を使用して 10 個のボタンを作成しました。各ボタンのタグを順番に 0 ~ 9 に設定します。私ができるようにしたいのは、ボタンがスライドされたとき (タップされただけでなく) をチェックし、そのタグをチェックして、タグが何であるかに応じて何かを実行できるようにすることです!

これが私のコードです:

    #import "LevelOneController.h"

@interface LevelOneController ()

@end

@implementation LevelOneController
@synthesize whereStuffActuallyHappens, squareLocations;

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"View loaded");

    squareLocations = [[NSMutableArray alloc] init];

    CGPoint dotOne = CGPointMake(1, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotOne]];

    CGPoint dotTwo = CGPointMake(23, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotTwo]];

    CGPoint dotThree = CGPointMake(45, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotThree]];

    CGPoint dotFour = CGPointMake(67, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotFour]];

    CGPoint dotFive = CGPointMake(89, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotFive]];

    CGPoint dotSix = CGPointMake(111, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotSix]];

    CGPoint dotSeven = CGPointMake(133, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotSeven]];

    CGPoint dotEight = CGPointMake(155, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotEight]];

    CGPoint dotNine = CGPointMake(177, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotNine]];

    CGPoint dotTen = CGPointMake(199, 25);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotTen]];

    int numby = [squareLocations count];

    for (int i = 0; i < numby; i++)
    {
        NSValue *pointLocation = [squareLocations objectAtIndex:i];
        CGPoint tmpPoint = [pointLocation CGPointValue];
        UIImage *theSquare = [UIImage imageNamed:@"square.png"];

        UIButton *squareButton = [[UIButton alloc] init];

        squareButton = [UIButton buttonWithType:UIButtonTypeCustom];
        squareButton.frame = CGRectMake(tmpPoint.x, tmpPoint.y, theSquare.size.width, theSquare.size.height);
        squareButton.tag = *(&i);
        [squareButton setImage:theSquare forState:UIControlStateNormal];

        [whereStuffActuallyHappens addSubview:squareButton];


    }
}

これを達成する良い方法を知っている人はいますか?ありがとう!

4

1 に答える 1

0

私はあなたがこのようなことをすることができると思いますが、それがどれほどパフォーマンスになるかはわかりません:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
     [super touchesMoved:touches withEvent:event];
     for (UITouch *touch in touches) {
          CGPoint locationInView = [touch locationInView:touch.view];
          for (NSValue *pointValue in squareLocations) {
               CGPoint point = [pointValue CGPointValue];
               if (CGRectContainsPoint(CGRectMake(point.x, point.y, 50, 50),locationInView) == YES) {
                      //This button or location has been dragged over
                }
          }
     }
}
于 2013-03-15T19:53:13.780 に答える