1

我有两个UITextViewsself.instructionsself.textView,它们应该根据用户选择的内容交替出现。

我创建一个self.textView这样的:

-(void)createSpaceToWrite
{
  [self.instructions removeFromSuperview];
  [self.bar removeFromSuperview];
  [self createNavigationBar:@"Compose" selector:@"displayScreen" withDone:NO];  //This adds a UINavigationBar to the view.

  if (!self.textView)
  {
    self.textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 60, 280, 150)];
  }

  self.textView.backgroundColor = [UIColor whiteColor];
  self.textView.font = [UIFont fontWithName:@"Helvetica Neue" size:14];
  self.textView.text = @"";
  [self.view addSubview:self.textView];
  self.textView.delegate = self;
}

然后我self.instructions像这样创建:

-(void)haikuInstructions
{
  [self.textView removeFromSuperview];
  [self.bar removeFromSuperview];
  [self createNavigationBar:@"Compose" selector:@"displayScreen" withDone:NO];

  if (!self.instructions)
  {
    self.instructions = [[UITextView alloc] initWithFrame:CGRectMake(10, 125, [[UIScreen mainScreen] bounds].size.width - 10, [[UIScreen mainScreen] bounds].size.height)];
  }

  self.instructions.backgroundColor=[UIColor clearColor];
  self.instructions.text = @"Text of instructions";
  self.instructions.editable=NO;
  [self.view addSubview:self.instructions];
  [self resignFirstResponder];
}

self.instructions用户从背景图像开始显示。美好的。

用户切换。说明文本消失,取而代之的是可编辑self.textView的白框。美好的。

用户切换回来。说明文本出现了——但白框仍然存在,即使我认为我已将其从超级视图中删除。不仅如此,它仍然是可编辑的,并且当用户去编辑它时仍然会弹出键盘!

我究竟做错了什么?

编辑:好吧,我基本上废弃了所有代码并从头开始上课,试图让所有事情变得更干净,我不再遇到这个问题,所以它一定是其他一些影响它的方法。教训:随意编码是不好的!

4

1 回答 1

0

为什么需要交替删除文本视图?通过设置 setHidden 属性来“隐藏”它们不是更好,例如:

[self.textView setHidden: YES];

并另外尝试以下方法:

[self.textView resignFirstResponder];
[self.textView setEditable: NO];
[self.textView setBackgroundColor: [UIColor clearColor]];  
[self.textView setAlpha: 0.0];
于 2012-12-04T08:01:21.800 回答