我使用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;
}
它能是什么?帮助,我无法理解。