3

UITextField にカスタム クリア ボタンを作成する必要があるため、rightView を使用しています。コードは以下のとおりです。

 UIImage *clearImage = [[UIImage imageNamed:@"search-clear.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0,0.0, 0.0, 0.0)];
    UIImageView *clearImageView = [[UIImageView alloc]initWithImage:clearImage];

    UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
    clearButton.frame = clearImageView.frame;
    [clearButton setBackgroundImage:clearImage forState:UIControlStateNormal];
    clearButton.backgroundColor = [UIColor clearColor];

    self.emailTextField.rightViewMode = UITextFieldViewModeWhileEditing;
    self.emailTextField.rightView = clearButton;
    self.emailTextField.clearButtonMode = UITextFieldViewModeNever;

ただし、ボタンは正しいタイミングで表示されません。テキストフィールドがテキスト長0でのみフォーカスされていることを示しています。入力を開始するとすぐに消えます。文字列が 1 文字以上のときに表示されるように、クリア ボタンを置き換えて複製する方法を理解する必要があります。

4

1 に答える 1

0

両方を同時に表示することはできませんが、このようにすることはできます

UITextField * textfield = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 300, 40)];
[textfield setBorderStyle:UITextBorderStyleRoundedRect];

UIImageView * imgvw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search.jpeg"]];
[imgvw setFrame:CGRectMake(0, 0, 30, 30)];

[textfield setRightView:imgvw];
[textfield setRightViewMode:UITextFieldViewModeUnlessEditing];
[textfield setClearButtonMode:UITextFieldViewModeWhileEditing];

[self.view addSubview:textfield];
于 2013-11-04T10:37:06.763 に答える