检查按钮是否滑过,并检查其标签? (IOS)

时间:2013-03-15 19:40:38

标签: iphone ios objective-c xcode uibutton

在我的代码中,我在数组中创建了点,并使用该数组创建了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];


    }
}

有谁知道实现这个目标的好方法?谢谢!

1 个答案:

答案 0 :(得分: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
                }
          }
     }
}