Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将按钮移动到图像目标_Ios_Objective C_Uibutton - Fatal编程技术网

Ios 将按钮移动到图像目标

Ios 将按钮移动到图像目标,ios,objective-c,uibutton,Ios,Objective C,Uibutton,我是目标c的新手,现在我试着建立一个类似游戏的游戏,我在目标坐标和按钮传递方面遇到了一些问题。我创建了一个-(void)dealandomword,在这里我从plist中随机抽取一个单词,并在屏幕上输出我的所有子视图。我从viewDidLoad:[self-dealRandomWord]调用它 这是我的问题: #pragma mark Targets _targets = [NSMutableArray arrayWithCapacity:word1len]; for (N

我是目标c的新手,现在我试着建立一个类似游戏的游戏,我在目标坐标和按钮传递方面遇到了一些问题。我创建了一个
-(void)dealandomword
,在这里我从plist中随机抽取一个单词,并在屏幕上输出我的所有子视图。我从
viewDidLoad:[self-dealRandomWord]
调用它

这是我的问题:

#pragma mark Targets

_targets = [NSMutableArray arrayWithCapacity:word1len];

         for (NSInteger i = 0; i < word1len; i++) {
             NSString *letter = [word1 substringWithRange:NSMakeRange(i,    1)];
             TargetView *target = [[TargetView alloc]   initWithLetter:letter andSideLength: letterSide];
             target.center = CGPointMake(xCenterTarget + i * (letterSide + kLetterMargin), placesView.frame.size.height / 2);
             [placesView addSubview:target];
             NSLog(@"biiitch %@", NSStringFromCGPoint(target.center));
             }
targetView.center坐标等于{0,0}

如何将每个目标的坐标传递给按钮,使其移动到目标。每个“下一步”按钮都应移动到下一个目标

以下是图片:

谢谢你的帮助

这是我的密码:

 -(void)dealRandomWord {
#pragma mark Level and words init
    NSAssert(self.level.words, @"Level not loaded");

    // random word from plist
    NSInteger randomIndex = arc4random()%[self.level.words count];
    NSArray* anaPair = self.level.words[ randomIndex ];

    NSString* question = anaPair[0]; // question
    NSString* word1 = anaPair[1]; // answer
    NSString* word2 = anaPair[2]; // some letters
    NSString* helpstr = anaPair[3]; // helper

    NSLog(@"qweqweq %@ %@ %@" , word1 , word2 , helpstr);

    NSInteger word1len = [word1 length];
    NSInteger word2len = [word2 length];

    NSLog(@"phrase1[%li]: %@", (long)word1len, word1);
    NSLog(@"phrase2[%li]: %@", (long)word2len, word2);
    NSLog(@"question %@", question);

    float letterSide = ceilf (kScreenWidth * 0.9 / (float)MAX(word1len, word2len) - kLetterMargin);

    float xOffset = (kScreenWidth - (float)MAX(word1len, word2len) * (letterSide + kLetterMargin))/3;


    xOffset += letterSide/2;
    float yOffset = 1.5* letterSide;


#pragma mark QuestionView init
    QuestionView *quv = [[QuestionView alloc] init];
    quv.questionLabel.text = question;
    [self.view addSubview:quv];
    quv.center = CGPointMake(185, 210);

#pragma mark PlacesView init

    PlacesView *placesView = [[PlacesView alloc] init];
    [self.view addSubview:placesView];
    placesView.center = CGPointMake(185, 400);

    //Center x position for targets
    float xCenterTarget = ((placesView.frame.size.width / 2) - ((word1len / 2) * letterSide ));

#pragma mark LetterView init

    LettersView *lettersView = [[LettersView alloc] init];
    [self.view addSubview:lettersView];
    lettersView.center = CGPointMake(185, 500);


#pragma mark Targets
    _targets = [NSMutableArray arrayWithCapacity:word1len];

    for (NSInteger i = 0; i < word1len; i++) {
        NSString *letter = [word1 substringWithRange:NSMakeRange(i, 1)];
        TargetView *target = [[TargetView alloc] initWithLetter:letter andSideLength: letterSide];
        target.center = CGPointMake(xCenterTarget + i * (letterSide + kLetterMargin), placesView.frame.size.height / 2);
        [placesView addSubview:target];
        NSLog(@"coord target init %@", NSStringFromCGPoint(target.center));
        }

#pragma mark LettersView init

    //init letters list
    _letters = [NSMutableArray arrayWithCapacity: word2len];

    //create letter
    for (NSInteger i=0;i<word2len;i++) {
        NSString* letter = [word2 substringWithRange:NSMakeRange(i, 1)];


        if (![letter isEqualToString:@" "]) {
            InputButtonsView *buttons = [[InputButtonsView alloc] initWithLetter:letter andSideLength:letterSide];
            buttons.center = CGPointMake(xOffset + i * (letterSide + kLetterMargin), lettersView.frame.size.height /2); // "/3*4" kScreenHeight/4*3
            if (i > 6) {
                buttons.center = CGPointMake(- 7 * xOffset + i * (letterSide + kLetterMargin), lettersView.frame.size.height/2 + (letterSide + kLetterMargin)); // "/3*4"


            }
            buttons.clickDelegate = self;
            [lettersView addSubview:buttons];
            //[buttons addSubview:buttons];

            [_letters addObject: letter];
        }
    }
}


-(void)inputButtonView:(InputButtonsView *)inputButtonView didPress:(CGPoint)didPress {
    TargetView *targetView = nil;
    NSLog(@"did press x = %f, y = %f", didPress.x , didPress.y);
    for(TargetView *tv in _targets) {
        if(CGRectContainsPoint(tv.frame, didPress)){
        targetView = tv;
                   break;
        }
    }


     [self placeForButton:inputButtonView atTarget:targetView];
    if (targetView != nil) {
        NSLog(@"Kek");

        if ([targetView.letter isEqualToString: inputButtonView.letter]) {
        [self placeForButton:inputButtonView atTarget:targetView];

        }

    }
}

-(void)placeForButton:(InputButtonsView*)inputButtonsView atTarget:(TargetView*)targetView {
    targetView.isMatched = YES;
    inputButtonsView.isMatched = YES;

    inputButtonsView.userInteractionEnabled = NO;

    CGPoint originButtons = [self.view.superview convertPoint:CGPointZero fromView:inputButtonsView];
    CGPoint originTargets = [self.view.superview convertPoint:CGPointZero fromView:targetView];

    inputButtonsView.center = originButtons;
    targetView.center = originTargets;

    NSLog(@"OriginButtons = %@ , OriginTargets = %@", NSStringFromCGPoint(originButtons) , NSStringFromCGPoint(originTargets));
    inputButtonsView.center = targetView.center;

    NSLog(@"TARGETVIEW.center %@", NSStringFromCGPoint(targetView.center));

}
-(void)一词{
#pragma标记级别和单词init
NSAssert(self.level.words,@“未加载级别”);
//plist中的随机词
NSInteger randomIndex=arc4random()%[self.level.words count];
NSArray*anaPair=self.level.words[randomIndex];
NSString*question=anaPair[0];//问题
NSString*word1=anaPair[1];//答案
NSString*word2=anaPair[2];//一些字母
NSString*helpstr=anaPair[3];//helper
NSLog(@“qweqweq%@%@%@)”,word1,word2,helpstr;
NSInteger word1len=[word1长度];
NSInteger word2len=[word2长度];
NSLog(@“短语1[%li]:%@),(长)单词1,单词1);
NSLog(@“短语2[%li]:%@),(长)word2len,word2);
NSLog(@“问题%@”,问题);
浮动字体边=天花板(kScreenWidth*0.9/(浮动)最大值(word1len,word2len)-kLetterMargin);
float xOffset=(kScreenWidth-(float)MAX(word1len,word2len)*(letterSide+kLetterMargin))/3;
xOffset+=信纸面/2;
浮动yOffset=1.5*字体边;
#pragma标记问题视图初始化
QuestionView*quv=[[QuestionView alloc]init];
quv.questionLabel.text=问题;
[self.view addSubview:quv];
quv.center=CGPointMake(185210);
#pragma mark PlacesView init
PlacesView*PlacesView=[[PlacesView alloc]init];
[self.view addSubview:placesView];
placesView.center=CGPointMake(185400);
//目标的中心x位置
float xCenterTarget=((placesView.frame.size.width/2)-(word1len/2)*letterSide));
#pragma mark LetterView init
LettersView*LettersView=[[LettersView alloc]init];
[self.view addSubview:lettsview];
lettersView.center=CGPointMake(185500);
#布拉格标记目标
_目标=[NSMutableArray阵列,容量:word1len];
对于(NSInteger i=0;i
 -(void)dealRandomWord {
#pragma mark Level and words init
    NSAssert(self.level.words, @"Level not loaded");

    // random word from plist
    NSInteger randomIndex = arc4random()%[self.level.words count];
    NSArray* anaPair = self.level.words[ randomIndex ];

    NSString* question = anaPair[0]; // question
    NSString* word1 = anaPair[1]; // answer
    NSString* word2 = anaPair[2]; // some letters
    NSString* helpstr = anaPair[3]; // helper

    NSLog(@"qweqweq %@ %@ %@" , word1 , word2 , helpstr);

    NSInteger word1len = [word1 length];
    NSInteger word2len = [word2 length];

    NSLog(@"phrase1[%li]: %@", (long)word1len, word1);
    NSLog(@"phrase2[%li]: %@", (long)word2len, word2);
    NSLog(@"question %@", question);

    float letterSide = ceilf (kScreenWidth * 0.9 / (float)MAX(word1len, word2len) - kLetterMargin);

    float xOffset = (kScreenWidth - (float)MAX(word1len, word2len) * (letterSide + kLetterMargin))/3;


    xOffset += letterSide/2;
    float yOffset = 1.5* letterSide;


#pragma mark QuestionView init
    QuestionView *quv = [[QuestionView alloc] init];
    quv.questionLabel.text = question;
    [self.view addSubview:quv];
    quv.center = CGPointMake(185, 210);

#pragma mark PlacesView init

    PlacesView *placesView = [[PlacesView alloc] init];
    [self.view addSubview:placesView];
    placesView.center = CGPointMake(185, 400);

    //Center x position for targets
    float xCenterTarget = ((placesView.frame.size.width / 2) - ((word1len / 2) * letterSide ));

#pragma mark LetterView init

    LettersView *lettersView = [[LettersView alloc] init];
    [self.view addSubview:lettersView];
    lettersView.center = CGPointMake(185, 500);


#pragma mark Targets
    _targets = [NSMutableArray arrayWithCapacity:word1len];

    for (NSInteger i = 0; i < word1len; i++) {
        NSString *letter = [word1 substringWithRange:NSMakeRange(i, 1)];
        TargetView *target = [[TargetView alloc] initWithLetter:letter andSideLength: letterSide];
        target.center = CGPointMake(xCenterTarget + i * (letterSide + kLetterMargin), placesView.frame.size.height / 2);
        [placesView addSubview:target];
        NSLog(@"coord target init %@", NSStringFromCGPoint(target.center));
        }

#pragma mark LettersView init

    //init letters list
    _letters = [NSMutableArray arrayWithCapacity: word2len];

    //create letter
    for (NSInteger i=0;i<word2len;i++) {
        NSString* letter = [word2 substringWithRange:NSMakeRange(i, 1)];


        if (![letter isEqualToString:@" "]) {
            InputButtonsView *buttons = [[InputButtonsView alloc] initWithLetter:letter andSideLength:letterSide];
            buttons.center = CGPointMake(xOffset + i * (letterSide + kLetterMargin), lettersView.frame.size.height /2); // "/3*4" kScreenHeight/4*3
            if (i > 6) {
                buttons.center = CGPointMake(- 7 * xOffset + i * (letterSide + kLetterMargin), lettersView.frame.size.height/2 + (letterSide + kLetterMargin)); // "/3*4"


            }
            buttons.clickDelegate = self;
            [lettersView addSubview:buttons];
            //[buttons addSubview:buttons];

            [_letters addObject: letter];
        }
    }
}


-(void)inputButtonView:(InputButtonsView *)inputButtonView didPress:(CGPoint)didPress {
    TargetView *targetView = nil;
    NSLog(@"did press x = %f, y = %f", didPress.x , didPress.y);
    for(TargetView *tv in _targets) {
        if(CGRectContainsPoint(tv.frame, didPress)){
        targetView = tv;
                   break;
        }
    }


     [self placeForButton:inputButtonView atTarget:targetView];
    if (targetView != nil) {
        NSLog(@"Kek");

        if ([targetView.letter isEqualToString: inputButtonView.letter]) {
        [self placeForButton:inputButtonView atTarget:targetView];

        }

    }
}

-(void)placeForButton:(InputButtonsView*)inputButtonsView atTarget:(TargetView*)targetView {
    targetView.isMatched = YES;
    inputButtonsView.isMatched = YES;

    inputButtonsView.userInteractionEnabled = NO;

    CGPoint originButtons = [self.view.superview convertPoint:CGPointZero fromView:inputButtonsView];
    CGPoint originTargets = [self.view.superview convertPoint:CGPointZero fromView:targetView];

    inputButtonsView.center = originButtons;
    targetView.center = originTargets;

    NSLog(@"OriginButtons = %@ , OriginTargets = %@", NSStringFromCGPoint(originButtons) , NSStringFromCGPoint(originTargets));
    inputButtonsView.center = targetView.center;

    NSLog(@"TARGETVIEW.center %@", NSStringFromCGPoint(targetView.center));

}