textfield的rightView按钮问题。不能为我工作UITextFieldViewModeWhileEditing

时间:2013-01-09 07:20:33

标签: objective-c uitableview uibutton

我正在使用UITableview搜索栏。为了搜索文本,我使用textField并在tableView的contentInset中添加设置。为清除文本,我使用rightView按钮。 在这里我得到一个奇怪的问题,在编辑文本时,我无法显示rightView按钮。

txtSearch.rightView =  [self overlayButtonRight];
txtSearch.rightViewMode = UITextFieldViewModeWhileEditing;


- (UIButton *)overlayButtonRight {
if (!overlayButtonRight) {
    overlayButtonRight = [UIButton buttonWithType:UIButtonTypeCustom] ;
    overlayButtonRight.frame = CGRectMake(0, 0 , 25, 14);
    UIImage *overlayImage = [UIImage imageNamed:@"checkMark_right_green.png"];
    if (overlayImage) {
        [overlayButtonRight setImage:overlayImage forState:UIControlStateNormal];

    }
}
return overlayButtonRight;

}

这里我已经描述了我如何应用这个按钮。使用此UITextFieldViewModeWhileEditing对我不起作用。

还有一件事在ios 5中正常工作,但在ios6中没有工作。

如果您有解决方案,请告诉我。

提前致谢!!!

1 个答案:

答案 0 :(得分:1)

这似乎是一个iOS错误..

这就是我所做的..

在文本字段子类

    -(id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder]) {

        [self addTarget:self action:@selector(didEditting:) forControlEvents: UIControlEventEditingChanged];

}

-(void) didStartTyping:(id)sender {
    if(self.text){
        self.rightViewMode = UITextFieldViewModeAlways;
    }else{
        self.rightViewMode = UITextFieldViewModeNever;
    }
}

- (BOOL)becomeFirstResponder{
    BOOL ret = YES ;
    ret = [super becomeFirstResponder] ;
    if( ret & self.text.length]){
        self.rightViewMode = UITextFieldViewModeAlways;
    }else{
        self.rightViewMode = UITextFieldViewModeNever;
    }

    return ret ;
}

- (BOOL)resignFirstResponder
{
    BOOL ret = YES ;
    ret = [super resignFirstResponder] ;
    if( ret )
        self.rightViewMode = UITextFieldViewModeNever;
    return ret ;
}

我觉得当我遇到同样的问题时,我找到了类似的解决方案。找不到了。