ios - 从 UIButton 持续发送消息

标签 ios objective-c xcode cocoa-touch uibutton

我目前正在制作游戏,但在创建方向键时遇到了问题。当我点击一个按钮时,它只会运行一次,我不知道我可以调用哪个事件来让它持续运行代码,直到玩家停止触摸按钮。当我尝试使用 while 循环时,它只会使自身重载并阻止您触摸其他按钮。这是我通常用来移动播放器和实际加载按钮等的代码:

    - (void) playerMoveLeft
{    
    NSArray *images = [NSArray arrayWithObjects:img9,img10,img11,img12,img13,img14,img15,img16, nil];

    [imageView setAnimationImages:images];

        NSLog(@"Called left");
        CGRect myFrame = imageView.frame;
        myFrame.origin.x = imageView.frame.origin.x - 5;
        imageView.frame = myFrame;
        [imageView startAnimating];
    [NSTimer scheduledTimerWithTimeInterval:0.6
                                     target:self
                                   selector:@selector(nothingMovingLeft)
                                   userInfo:nil
                                    repeats:NO];
    [myTimer invalidate];
    myTimer = nil;
}


{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    img1 = [UIImage imageNamed:@"walking-e0000.png"];
    img2 = [UIImage imageNamed:@"walking-e0001.png"];
    img3 = [UIImage imageNamed:@"walking-e0002.png"];
    img4 = [UIImage imageNamed:@"walking-e0003.png"];
    img5 = [UIImage imageNamed:@"walking-e0004.png"];
    img6 = [UIImage imageNamed:@"walking-e0005.png"];
    img7 = [UIImage imageNamed:@"walking-e0006.png"];
    img8 = [UIImage imageNamed:@"walking-e0007.png"];
    img9 = [UIImage imageNamed:@"walking-w0000.png"];
    img10 = [UIImage imageNamed:@"walking-w0001.png"];
    img11 = [UIImage imageNamed:@"walking-w0002.png"];
    img12 = [UIImage imageNamed:@"walking-w0003.png"];
    img13 = [UIImage imageNamed:@"walking-w0004.png"];
    img14 = [UIImage imageNamed:@"walking-w0005.png"];
    img15 = [UIImage imageNamed:@"walking-w0006.png"];
    img16 = [UIImage imageNamed:@"walking-w0007.png"];

    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0,180.0,80.0,80.0)];

    NSArray *images = [NSArray arrayWithObjects:img7, nil];

    [imageView setAnimationImages:images];

    [imageView setAnimationRepeatCount:100];

    [imageView setAnimationDuration:0.5];

    [imageView startAnimating];

    [myView addSubview:imageView];


    moveRight = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [moveRight addTarget:self action:@selector(playerMoveRight) forControlEvents:UIControlEventTouchUpInside];

    [moveRight setTitle:@"->" forState:UIControlStateNormal];

    moveRight.frame = CGRectMake(200, 280, 60, 60);

    [myView addSubview:moveRight];



    //longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(whichWayToMove:)];

    //longPress.minimumPressDuration = 0.0;

    //[myView addGestureRecognizer:longPress];

    moveLeft = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [moveLeft addTarget:self action:@selector(playerMoveLeft) forControlEvents:UIControlEventTouchUpInside];

    [moveLeft setTitle:@"<-" forState:UIControlStateNormal];

    moveLeft.frame = CGRectMake(30, 280, 60, 60);

    [myView addSubview:moveLeft];

    NSLog(@"Finished setup");
}

最佳答案

阅读这篇文章,它既有计时器解决方案,也有触摸按钮解决方案

Way to make a UIButton continuously fire during a press-and-hold situation?

您可以根据自己的目的进行设置

关于ios - 从 UIButton 持续发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15497363/

相关文章:

ios - 一般来说,Apple 将支持使用旧 Xcode 提交应用程序多长时间?

iphone - 如果 UIActivityIndi​​catorView 被移除/释放/解除分配,它是否会自行停止动画

IOS - Objective-C - 如何从我的登录 View Controller 中删除 Tableview 菜单?

xcode - Xcode 构建结果文件在哪里?

ios - 将项目复制到新笔记本电脑后出现 Apple Mach-O 链接器错误

ios - 等到 super 库中的文件加载

ios - 在函数 swift 中使用 presentviewcontroller

ios - 自动布局中按钮之间的等宽和等间距

objective-c - 在 Swift 中使用外部参数名称时的方法签名是什么

objective-c - 如何通过单元测试来测试行是否添加到数据库中?