2013-04-10 71 views
3

我需要在UITextField上创建自定义清除按钮,所以我使用的是RightView。代码如下:UITextField rightViewMode无法正常工作

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时的焦点。只要我开始输入,它就会消失。我需要弄清楚如何替换和复制清除按钮,以便它显示字符串何时至少有一个字符。

+0

你能否提供一些截图? – Undo 2013-04-10 17:45:19

+0

http://gyazo.com/fce8bd7995851c8545c5f26a2f61fda4 – JeffN 2013-04-10 17:46:33

+0

http://gyazo.com/50aa6697331dd436faabcededcb2896f – JeffN 2013-04-10 17:46:57

回答

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];