Проблема с ошибкой "scrollTheView" необъявленной - PullRequest
0 голосов
/ 30 июня 2011

Я работаю над учебником по созданию приложений. Я последовал и все написано именно как учебник. Однако когда я запускаю сборку, я получаю несколько ошибок. Ниже приведен фрагмент кода метода, который у меня есть в файле реализации. Я получаю сообщение об ошибке .... (scrollTheView 'undeclared) ... также у меня есть еще одна ошибка, связанная с ним (ожидаемая'; 'before': 'token) .....

Ниже этого метода я включу весь свой заголовочный файл, который я объявил методом "scrollTheView", поэтому я не понимаю, где я ошибся. В учебнике использовалась SDK iPhone OS 2.2.1, однако я использую SDK iphone 4.3. Может ли это быть реальной причиной этой проблемы? Я отредактировал пост, чтобы включить весь файл реализации. В конце кода я также получаю сообщение об ошибке «ожидаемое объявление или утверждение в конце ввода» и еще одно высказывание: «@end» отсутствует в контексте реализации », спасибо всем, кто просмотрел и пытается мне помочь.
спасибо, Скотт, за то, что помог мне с этой пропавшей скобкой ... теперь у меня есть уведомление, которое всплывает, даже если оно компилируется ... Должен ли я волноваться? он появляется в строке «NSValue * aValue .....» под методом «keyboardWillShow»

 #import "ReturnToMeViewController.h"  
 #import "ReturnToMeAppDelegate.h"

@implementation ReturnToMeViewController

@synthesize textField;  
@synthesize label;  
@synthesize callNumber;  

-(void)viewDidLoad {  
    textField.clearButtonMode =
    UITextFieldViewModeWhileEditing;  
    [super viewDidLoad];  
}




-(void) viewWillAppear:(BOOL)animated {  
    [[NSNotificationCenter defaultCenter] addObserver:self
                    selector:@selector(keyboardWillShow:)  
                        name:UIKeyboardWillShowNotification
                        object:self.view.window];  
    [super viewWillAppear:animated];  
}

-(void) viewWillDisappear:(BOOL)animated {  

    [[NSNotificationCenter defaultCenter] removeObserver:self
            name:UIKeyboardWillShowNotification object:nil];  
    [super viewWillDisappear:animated];  
}

-(void)keyboardWillShow: (NSNotification *)notif {

    NSDictionary* info = [notif userInfo];  

    NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];  
    CGSize keyboardSize = [aValue CGRectValue] .size;  
    float bottomPoint = (textField.frame.origin.y+textField.frame.size.height+10);  
    scrollAmount = keyboardSize.height - (self.view.frame.size.height- bottomPoint);  

    if (scrollAmount >0) {
        moveViewUp =YES;   
        [self scrollTheView:YES]; 
    }
    else {
        moveViewUp =NO;  

    }



-**(void) scrollTheView:(BOOL) movedUp {**

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3];
        CGRect rect = self.view.frame;
        if (movedUp) {
            rect.origin.y -= scrollAmount;
        }
        else {
            rect.origin.y += scrollAmount;
        }
        self.view.frame = rect;
        [UIView commitAnimations];
    }

-(void)touchesBegan: (NSSet *) touches withEvent: (UIEvent *)event {  
        if ( textField.editing) {  
            [textField resignFirstResponder];  
            [self updateCallNumber];  
            if (moveViewUp) [self scrollTheView:NO];  
        }
        [super touchesBegan:touches withEvent:event];  
    }



-(void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

-(void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


-(void)dealloc {  
    [textField release];  
    [label release];   
    [callNumber release]; 
    [super dealloc];  
}

    -(BOOL)textFieldShouldReturn: (UITextField *)theTextField {  

        [theTextField resignFirstResponder];   
        if (moveViewUp) [self scrollTheView:NO];  
        [self updateCallNumber]; 

        return YES;  
    }

-(void)updateCallNumber {    
        self.callNumber = textField.text;  
        label.text = self.callNumber;  
    }  

@end


###ReturnToMeViewController.m

    #import <  UIKit/UIKit.h >  

    @interface ReturnToMeViewController : UIViewController
        < UITextFieldDelegate > {  
        IBOutlet UITextField *textField;  
        IBOutlet UILabel *label;  
        BOOL    moveViewUp;  
        CGFloat  scrollAmount;  
        NSString  *callNumber;  

    }  

    @property (nonatomic, retain) UITextField *textField;  
    @property (nonatomic, retain) UILabel *label;  
    @property (nonatomic, retain) NSString  *callNumber;  

    - (void)scrollTheView:(BOOL) movedUp;  
    - (void)updateCallNumber;  

    **@end**

Ответы [ 3 ]

0 голосов
/ 30 июня 2011

Вполне может быть ошибка перед объявлением scrollTheView, что означает, что он не может обнаружить scrollTheView. Посмотрите или отправьте больше кода здесь.

0 голосов
/ 02 июля 2011

Вам не хватает закрывающей скобки в конце вашего keyboardWillShow:(NSNotification *)notif метода.

if (scrollAmount >0) {
    moveViewUp =YES;
    [self scrollTheView:YES];
}
else {
    moveViewUp =NO;
} // This is where the missing bracket should be
}

Должны быть две закрывающие скобки - одна для оператора if и одна для метода - но есть только одна.

0 голосов
/ 30 июня 2011

звучит так, как будто вам не хватает закрывающей скобки "}" или точки с запятой ";"где-то перед вашей функцией scrollTheView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...