我正在模拟一个项目的快速演示,但遇到了 UITextField 的问题。
我们想要的行为是,当用户单击按钮时,应该有一个自定义视图出现,其中包含一个 UITextField 和一个 UIButton 在覆盖主视图的自定义视图中。
我在 Searchview.m 中有一个名为 Searchview 的自定义视图和以下内容。问题是当 textField 是一个属性时,它不会显示,但是当它是一个局部变量时,它会显示。任何人都可以帮助我了解正在发生的事情,以便 UITextField 显示吗?我是如何做到这一点的甚至是正确的想法(自定义 UIView 或自定义 UIControl 或模态控制器)?最后, setNeedsDisplay 在这里合适吗?
提前谢谢
@interface Searchview()
@property (nonatomic, weak) UITextField *textField;
@end
- (void)drawRect:(CGRect)rect
{
// this doesn't work
self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 120.0f, 25.0f)];
self.textField.returnKeyType = UIReturnKeyDone;
self.textField.placeholder = @"Writer";
self.textField.borderStyle=UITextBorderStyleBezel;
[self.textField addTarget:self
action:@selector(textFieldDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[self addSubview: self.textField];
/* this works
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 120, 25)];
textField.returnKeyType = UIReturnKeyDone;
textField.placeholder = @"Writer";
textField.borderStyle=UITextBorderStyleBezel;
[textField addTarget:self
action:@selector(textFieldDone:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[self addSubview: textField];
*/
UIButton *mButton=[UIButton buttonWithType:UIButtonTypeRoundedRect];
mButton.frame=CGRectMake(200.0f,10.0f,100.0f,37.0f);
[mButton setTitle:@"search" forState:UIControlStateNormal];
[mButton addTarget:self action:@selector(showSearchController:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:mButton];
[self setNeedsDisplay];
}
作为属性 - 未显示:
作为局部变量 - 显示: