2013-04-10 69 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];