带有第二个NavBar的可编辑TextView - 显示文字,但为时已晚。
该应用有一个导航控制器。 我有一个iPhone应用程序基本上有三个级别。
第1级 - 具有类别名称的表
第2级 - 包含所选类别的项目列表的表
第3级 - 带有多个视图的选项卡式视图,包括UITextView以获取项目的详细信息 使用TextView的这些选项卡式视图中的一个是可编辑的。
当用户点击可编辑的TextView KeyBoard时 出现。用户可以输入TextView。字符出现 因为他们打字。
在这个Level 3 TextView的顶部有一个NavBar(存在于所有3个级别中 更改)使用BackButton和右侧的“home-> Level1”按钮。
一切正常,直到在可编辑的TextView中我添加了第二个NavigationBar 在现有的NavBar下方。第二个NavBar有两个按钮 同样。它们是保存/取消。
当我单击这些“保存”和“取消”按钮时,操作正确
达到了方法。一切都是完美的,一个例外,文本
键入的内容直到TextView中才出现
触摸保存或取消按钮。相关的按钮设置和
我的TabViewController.m
中的操作方法如下。我需要坚持这一点
数据
我认为从TextView获取通知并且动作handleTextChange可以做到这一点,但没有运气。我被卡住了。
.........
- (void)loadView {
self.myTextView = [[UITextView alloc] init];
self.myTextView.delegate = self;
self.view = self.myTextView;
//UITextViewTextDidChangeNotification
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleTextChange:)
name:UITextViewTextDidChangeNotification
object:nil];
NSLog(@"Registered DG_HandleChangeTextNotification with notification center.");
}
- (void)handleTextChange:(NSNotification * )note
{
[self.myTextView setNeedsDisplay] ;
NSLog(@"...Handled Text Change.");
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
// provide my own Done/Save button to dismiss the keyboard
saveNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
saveNavigationBar.barStyle = UIBarStyleBlackOpaque;
UINavigationItem *doneItem = [[UINavigationItem alloc] init];
doneItem.title = @"My Notes";
UIBarButtonItem *doneItemButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self action:@selector(saveAction:)];
UIBarButtonItem *cancelItemButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self
action:@selector(cancelAction:)];
[doneItem setRightBarButtonItem:doneItemButton animated:NO];
[doneItem setLeftBarButtonItem:cancelItemButton animated:NO];
[saveNavigationBar pushNavigationItem:doneItem animated:NO];
[self.view addSubview:saveNavigationBar];
[doneItem release];
[cancelItemButton release];
[doneItemButton release];
}
- (void)saveAction:(id)sender
{
// finish typing text/dismiss the keyboard by removing it as the first responder
self.text = self.myTextView.text;
[self.saveNavigationBar removeFromSuperview];
[self.myTextView resignFirstResponder];
}
- (void)cancelAction:(id)sender
{
[self.saveNavigationBar removeFromSuperview];
[self.myTextView resignFirstResponder];
}
答案 0 :(得分:0)
第二个NavBar隐藏了UITextEdit的区域 这样我在看到文字之前就不得不输入大约四行。我相信 我需要将UITextEdit的高度降低44像素。