2013-12-18 2 views
0

Я пытаюсь сделать игру с угадыванием, и по какой-то причине я не могу получить вход для регистрации, когда я перенес его из другого файла. Клавиатура также не исчезнет. Чего не хватает?не может заставить клавиатуру уйти или войти в регистр

gameviewcontroller.h:

#import <UIKit/UIKit.h> 

@interface GameViewController : UIViewController 
<UITextFieldDelegate> 
{ 
    int randomNum; 
    int turns; 
    id mons; 
    IBOutlet UITextField *guessField; 
    IBOutlet UILabel *resultLabel; 
    IBOutlet UILabel *playAgain; 


} 
-(IBAction)enterGuess:(id)sender; 
@property (weak, nonatomic) IBOutlet UIImageView *image; 





@end 

gameviewcontroller.m

#import "GameViewController.h" 

@interface GameViewController() 

@end 

@implementation GameViewController 

- (void)viewDidLoad 
{ 

    turns = 0; 
    [super viewDidLoad]; 


    // Do any additional setup after loading the view, typically from a nib. 
} 
- (IBAction)updateLevel:(UISegmentedControl *)sender { 
    guessField.text = [NSString stringWithFormat:@" "]; 
    resultLabel.text = [NSString stringWithFormat:@" "]; 
    playAgain.text = [NSString stringWithFormat:@" "]; 
    _image.image=[UIImage imageNamed:@"guess-number.jpg"]; 
    turns = 0; 
    if(guessField.text.length != 0) 
    { 

     randomNum = arc4random() % 10; 

    } 
    else if (guessField.text.length == 0) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"you did not enter a guess!" message:nil delegate:self cancelButtonTitle:@"try again" otherButtonTitles:nil, nil]; 
     [alert show]; 

    } 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

-(IBAction)enterGuess:(id)sender{ 

    if(guessField.text.length != 0) 
    { 
     if ([guessField.text intValue] != randomNum) { 
      if ([guessField.text intValue] > randomNum) { 

       _image.image=[UIImage imageNamed:@"arrow-down.png"]; 
       resultLabel.text = [NSString stringWithFormat:@" "]; 
       playAgain.text = [NSString stringWithFormat:@" Try Again. "]; 
       turns ++; 
      } 
      else if ([guessField.text intValue] < randomNum){ 


       _image.image=[UIImage imageNamed:@"arrow_up.png"]; 
       resultLabel.text = [NSString stringWithFormat:@" "]; 
       playAgain.text = [NSString stringWithFormat:@" Try Again. "]; 
       turns ++; 

      } 


     } 
     else if ([guessField.text intValue] == randomNum){ 

      turns ++; 

      if([guessField.text intValue] == 0){ 
       mons = [NSString stringWithFormat: @"which I guess is no pokemon at all. Sad day!"]; 
      } 

      if([guessField.text intValue] == 1){ 
       _image.image=[UIImage imageNamed:@"bulbasaur6.jpg"]; 

       mons = [NSString stringWithFormat:@"Bulbasaur"]; 

      } 
      if([guessField.text intValue] == 2){ 
       _image.image=[UIImage imageNamed:@"ivysaur.jpg"]; 

       mons = [NSString stringWithFormat:@"Ivysaur"]; 


      } 
      if([guessField.text intValue] == 3){ 
       _image.image=[UIImage imageNamed:@"venusaur.jpg"]; 
       mons = [NSString stringWithFormat:@"Venusaur"]; 

      } 
      if([guessField.text intValue] == 4){ 
       _image.image=[UIImage imageNamed:@"charmander.jpg"]; 
       mons = [NSString stringWithFormat:@"Charmander"]; 


      } 
      if([guessField.text intValue] == 5){ 
       _image.image=[UIImage imageNamed:@"charmeleon.jpg"]; 
       mons = [NSString stringWithFormat:@"Charmeleon"]; 


      } 
      if([guessField.text intValue] == 6){ 
       _image.image=[UIImage imageNamed:@"charizard.jpg"]; 
       mons = [NSString stringWithFormat:@"Charizard"]; 


      } 
      if([guessField.text intValue] == 7){ 
       _image.image=[UIImage imageNamed:@"squirtle.jpg"]; 
       mons = [NSString stringWithFormat:@"Squirtle"]; 


      } 
      if([guessField.text intValue] == 8){ 
       _image.image=[UIImage imageNamed:@"wartortle.jpg"]; 
       mons = [NSString stringWithFormat:@"Wartortle"]; 


      } 
      if([guessField.text intValue] == 9){ 
       _image.image=[UIImage imageNamed:@"blastoise.jpg"]; 
       mons = [NSString stringWithFormat:@"Blastoise"]; 


      } 

      resultLabel.text = [NSString stringWithFormat:@"Congrats, you got pokemon # %i, %@. ", randomNum, mons]; 
      playAgain.text = [NSString stringWithFormat:@"Enter New Number to Reset and Play Again"]; 

      randomNum = arc4random() % 10; 
      turns = 0; 
     } 
     else 
     { 

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"you did not enter a guess!" message:nil delegate:self cancelButtonTitle:@"try again" otherButtonTitles:nil, nil]; 
      [alert show]; 
     } 
    }} 

@end 

ответ

0

Попытка добавления

[self.guessField resignFirstResponder]; 

методу enterGuess.

2

Вам не хватает UITextFieldDelegate методов. Например.

-(void)textFieldDidEndEditing:(UITextField *)textField { 
    [textField resignFirstResponder]; 
} 

Кроме того, тот факт, что вход не введен, кажется, указывает, что вы сделали не установить контроллер в качестве delegate текстового поля.

Чтобы проверить правильность установки делегата, поместите контрольную точку в textFieldDidBeginEditing:. Если он не вызывается, вы не задали делегата по мере необходимости. Кроме того, попробуйте поставить кнопку, которая вызывает resignFirstResponder в текстовом поле. В textFieldDidEndEditing: вы можете получить текст с поля и обработать его.

+0

Я добавил это в gamecontroller, и он все еще не работает. По какой-то причине я не могу заставить enterguess работать и показывать фактические изменения. – spoons55

+0

См. Последнее предложение моего ответа. Если контроллер является делегатом текстового поля, он * должен * вызывать методы делегата. См. Дополнение к моему ответу. – Mundi

Смежные вопросы