Как отключить MasterView, когда клавиатура появляется в DetailView

Я хотел бы знать, возможно ли (и как), когда клавиатура появляется в DetailView, отключать любые элементы управления MasterView, пока они не исчезнут. Конечно, все это происходит в приложении, основанном на разделенном представлении.

---Обновление решения принца---

Мастервиевконтроллер.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;
}

Этот код как есть приводит к сбою приложения с ошибкой «Неизвестный селектор». Как связать делегатов; Не знаю проблема в этом или нет. Любая помощь?


person Pantelis Proios    schedule 19.09.2012    source источник


Ответы (2)


Используйте делегат UITextField, а также привяжите делегатов:

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

   .......
   return YES;
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
   MasterView.userInteractionEnabled = YES;
   [textField resignFirstResponder];
   return YES;
}
person Paresh Navadiya    schedule 19.09.2012

Я нашел решение!

в MasterView viewDidLoad:

//---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];
}
person Pantelis Proios    schedule 09.10.2012