NSNotificationCenter使用textEdit创建了一些东西

时间:2015-03-10 17:16:25

标签: ios objective-c xcode keyboard nsnotificationcenter

我使用NSNotificationCenter跟踪键盘的打开和关闭。

在ViewWillAppear

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:@"UIKeyboardWillShowNotification"
                                           object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardwillHide:)
                                             name:@"UIKeyboardWillHideNotification"
                                           object:nil];

然后

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

    NSDictionary *userInfo = [note userInfo];
    kbSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;


     UIEdgeInsets contentInsets = UIEdgeInsetsMake(64, 0.0, kbSize.height-50, 0.0);
     [self.tableView setContentInset:contentInsets];
     [self.tableView setScrollIndicatorInsets:contentInsets];

    NSInteger lastSectionIndex = [self.tableView numberOfSections] - 1;
    NSInteger lastRowIndex = [self.tableView numberOfRowsInSection:lastSectionIndex] - 1;
    NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
    [self.tableView scrollToRowAtIndexPath:pathToLastRow atScrollPosition:UITableViewScrollPositionTop animated:YES];

    //поднимаем окно ввода
    CGRect frame = footer.frame;
    frame.origin.y = frame.origin.y -kbSize.height+50;
    [UIView animateWithDuration:0.3 animations:^{
        footer.frame = frame;
    }];
}

- (void) keyboardwillHide:(NSNotification *)note {

     UIEdgeInsets contentInsets = UIEdgeInsetsMake(64, 0.0, 0, 0.0);
     [self.tableView setContentInset:contentInsets];
     [self.tableView setScrollIndicatorInsets:contentInsets];


    CGRect frame = footer.frame;
    frame.origin.y = frame.origin.y +kbSize.height-50;
    [UIView animateWithDuration:0.3 animations:^{
        footer.frame = frame;
    }];
}

并且全部取消

-(void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];

}

我在View和按钮上有一个TextEdit,它应该将TextEdit.text发送到下一个控制器。

如果我选择TextEdit - >设置一些text->点击按钮。然后一切都会好的。

BUT

如果我选择TextEdit - > gt;设置一些text->取消选择TextEdit - > 然后点按按钮(不带键盘)。

它会向下一个控制器发送一些Not TEXT ... 我尝试使用nslog并将其写入控制台<UIViewControllerBuiltinTransitionViewAnimator: 0x170241110>

按钮操作和segue

    //добавить раздел
-(void)addSection:(UIButton*)sender{
    //убираем клаву
    [addTextField resignFirstResponder];

    BOOL test=YES;
    //проверка на совпадение в с существующими категориями
    if (userLists.count>0) {
        for (int i=0; i<[[userLists objectForKey:@"AllTypes"]count]; i++) {
            if ([addTextField.text isEqualToString:[[[userLists objectForKey:@"AllTypes"]objectAtIndex:i]objectForKey:@"name"]]) {
                test=NO;
            }
        }
    }

    if (test) {
        //открываем добавление секций
        AddSectionTableView *vc=[AddSectionTableView new];
        UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:vc];
        [vc setDelegate:self];
        [vc setName:addTextField.text];
        [self presentViewController:nav animated:YES completion:nil];
    }else{
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Ошибка ввода"
                                                       message: @"Категория с таким названием уже существует!"
                                                      delegate: self
                                             cancelButtonTitle:@"Хорошо"
                                             otherButtonTitles:nil];
        [alert show];
    }

    //очищаем поле ввода
    addTextField.text=@"";
    //закрываем кнопку добавления
    [addButton setEnabled:NO];
}

第二个ViewControl

我们从第二个视图控制器获取的名称文本

 //Загрузка базы данных
    userLists=[NSMutableDictionary dictionaryWithContentsOfFile:userListsDOCUMENT];

    ////
    NSMutableDictionary *dd=[NSMutableDictionary new];
    [dd setObject:name forKey:@"name"];

    NSMutableDictionary *AllPeople=[NSMutableDictionary new];

    NSMutableArray *myArray=[NSMutableArray new];
    [myArray addObject:@"1"];
    [myArray addObject:@"2"];
    [myArray addObject:@"4"];

    [AllPeople setObject:myArray forKey:@"AllWeather"];
    [dd setObject:AllPeople forKey:@"AllPeople"];
    NSLog(@"%@",name);

    [[userLists objectForKey:@"AllTypes"] addObject:dd];

    //записываем в файл
    [userLists writeToFile:userListsDOCUMENT atomically:YES];

    [self.delegate addTableData];
    ////

First ViewController

-(void)addTableData{
    //обновляем списки
    userLists=[NSMutableDictionary dictionaryWithContentsOfFile:userListsDOCUMENT];

    //добавляем в массив
    [ActivTableArrayForMySections addObject:[[userLists objectForKey:@"AllTypes"] lastObject]];

    //добавляем ячейку для ячейки
    [marks2 addObject:@0];

    //перезагружаем таблицу
    [self.tableView reloadData];
    //прокручиваем вниз
    [self.tableView setContentOffset:CGPointMake(0, self.tableView.contentSize.height)];
}

UITextFieldDelegate

-(void)textFieldDidChange:(UITextField *)textField{
    //открытие кнопки добавление , если есть текст
    if (![textField.text isEqualToString:@""]) {
        [addButton setEnabled:YES];
    }else{
        [addButton setEnabled:NO];
    }
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    //убираем клаву по нажатию на done
    [textField resignFirstResponder];
    return YES;
}

它能是什么?帮助,我无法理解。

0 个答案:

没有答案