0

キーボードがDetailViewに表示されたときに、MasterViewコントロールが消えるまで無効にすることが可能かどうか(およびその方法)を知りたいです。もちろん、これはすべて分割ビューベースのアプリで行われます。

---Princeのソリューションの更新---

MasterViewController.h

@property (strong, nonatomic) UIView *MasterView;

MasterViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    MasterView=self.view;

    self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
    self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
}

DetailViewController.m

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    ((MasterViewController *)self.parentViewController).MasterView.userInteractionEnabled=NO;

    return YES;
}

このコードはそのままで、「不明なセレクター」エラーでアプリをクラッシュさせます。デリゲートをバインドするにはどうすればよいですか。それが問題かどうかわからない。何か助けはありますか?

4

2 に答える 2

0

解決策がわかった!

MasterView ビューでDidLoad:

//---registers the notifications for keyboard---
    // to see if keyboard is shown / not shown
    [[NSNotificationCenter defaultCenter]
     addObserver: self
     selector:@selector(keyboardDidShow:)
     name:UIKeyboardDidShowNotification
     object:self.view.window];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(keyboardDidHide:)
     name:UIKeyboardDidHideNotification
     object:nil];

その後...:

//----------Handling Keyboard Appearence---
-(void) keyboardDidShow:(NSNotification *) notification {
    [self.tableView setUserInteractionEnabled:NO];
}

//---when the keyboard disappears---
-(void) keyboardDidHide:(NSNotification *) notification {
    [self.tableView setUserInteractionEnabled:YES];
}

//---before the View window disappear---
-(void) viewWillDisappear:(BOOL)animated {
    //---removes the notifications for keyboard---
    [[NSNotificationCenter defaultCenter]
     removeObserver: self
     name:UIKeyboardWillShowNotification
     object:nil];

    [[NSNotificationCenter defaultCenter]
     removeObserver:self
     name:UIKeyboardWillHideNotification
     object:nil];
}
于 2012-10-09T19:58:03.407 に答える
0

UITextField のデリゲートを使用し、デリゲートもバインドします。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
   MasterView.userInteractionEnabled = NO;

   .......
   return YES;
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
   MasterView.userInteractionEnabled = YES;
   [textField resignFirstResponder];
   return YES;
}
于 2012-09-19T12:16:31.940 に答える