プロジェクトの簡単なデモをモックアップしていますが、UITextField に問題があります。
私たちが望む動作は、ユーザーがボタンをクリックしたときに、メイン ビューをオーバーレイするカスタム ビューに UITextField と UIButton と共に表示されるカスタム ビューが存在することです。
Searchview.m に Searchview と次のカスタム ビューがあります。問題は、textField がプロパティの場合は表示されませんが、ローカル変数の場合は表示されることです。UITextField が表示されるように、何が起こっているのか誰でも助けてもらえますか? 私がこれをどのように行っているかは正しい考えですか (カスタム UIView またはカスタム UIControl またはモーダルコントローラー)? 最後に、setNeedsDisplay はここで適切でしょうか?
thx事前に
@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];
}
プロパティとして - 非表示:
ローカル変数として - 表示: