从Superview中删除时UITextView不会消失
Posted
技术标签:
【中文标题】从Superview中删除时UITextView不会消失【英文标题】:UITextView doesn't disappear when removedFromSuperview 【发布时间】:2012-12-04 06:52:26 【问题描述】:我有两个UITextView
s,self.instructions
和 self.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
,一个白框。很好。
用户切换回来。说明文本出现了——但白框仍然存在,即使我认为我已将其从超级视图中删除。不仅如此,它仍然是可编辑的,并且当用户去编辑它时仍然会弹出键盘!
我做错了什么?
编辑:好吧,我基本上废弃了所有代码并从头开始上课,试图让所有事情变得更干净,我不再遇到这个问题,所以它一定是其他一些影响它的方法。教训:随意编码是不好的!
【问题讨论】:
self.textView=nil;
在[self.textView removeFromSuperview];
之后尝试这一行
感谢您的想法,但它并没有改变任何东西。 :(
我测试了您的代码似乎可以正常工作,尽管我评论了createNavigationBar:selector:withDone:
并添加了一些按钮来调用这两种方法。您是否正确调整了 UIViewController 头文件中的 @property (nonatomic,strong) UITextView *textView
和 @property (nonatomic,strong) UITextView *instructions
为什么需要交替删除文本视图?通过设置 setHidden 属性来“隐藏”它们不是更好吗,例如:
[self.textView setHidden: YES];
另外尝试以下方法:
[self.textView resignFirstResponder];
[self.textView setEditable: NO];
[self.textView setBackgroundColor: [UIColor clearColor]];
[self.textView setAlpha: 0.0];
【讨论】:
嗯....嗯,这确实改变了一些事情;白盒子仍然留在那里,但它现在在指令前面而不是后面。仍然不是我的目标,但至少它会影响事情...... 嗯,奇怪!也试试 [self.textView setBackgroundColor: [UIColor clearColor]];和/或 [self.textView setAlpha: 0.0];以上是关于从Superview中删除时UITextView不会消失的主要内容,如果未能解决你的问题,请参考以下文章
当内部按钮触摸时,如何从 Superview 中删除以编程方式创建的子视图?