0

我正在开发一个具有多个视图的应用程序。我有一个在 xlib 文件中创建的图像库模板。此视图将作为滚动视图中的单个页面加载。我可以使用以下内容从 xlib 多次加载视图:

- (void)registerForKeyboardNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];

}
- (id)initWithFrame:(CGRect)frame
{
    self = [[[NSBundle mainBundle] loadNibNamed:@"GSEstimateView" owner:self options:NULL] lastObject];
    self.commentText.delegate = self;
    self.scrollView.delegate = self;
    self.commentText.delegate =self;
    [self registerForKeyboardNotifications];
    return self;
}

我面临的第一个问题是,当显示键盘时,keyboardWasShown: 方法被我创建的 UIViews 调用。如果我尝试从第二个 UIView 加载键盘,则会出现调用无效选择器的异常。UIView 是从 nib 还是 xlib Singleton 加载的?如果我从 nib 文件加载 UIView 实例,如何通知它?

4

1 回答 1

0

(^.^)“抱歉,我的英语不好,如果有人喜欢纠正我的编辑,我将不胜感激”

您好首先我不建议使用 NSNotification 更喜欢使用这样的协议。

@protocol KeyBoardDelegate <NSObject>
- (void)KeyBoardVisible:(BOOL)op;
@end

如果您有多个视图,并且您现在想要这样的视图控件:

  • * viewDidLoad、viewDidUnload、viewWillDisappear、viewWillAppear 等 *

我建议像这样使用 UIViewController 的视图。

UIViewControllerCustom *example = [[UIViewControllerCustom alloc] initWithNibName:@"exampleNIB" bundle:[NSBundle mainBundle]];
[self.view addSubview:example.view];

使用它,您可以控制示例视图控制器的视图并使用方法

- (void)viewDidLoad{
  [super viewDidLoad];
  //When the nib has been loaded.
}

- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  //When the view is show.
}

- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//The view is hidden
}

- (void)viewDidUnload{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

还有一些方法。:)

于 2012-04-23T03:55:02.930 回答