0

我正在使用 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 中无法运行。

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

提前致谢!!!

4

1 回答 1

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

我想当我遇到同样的问题时,我在某处找到了类似的解决方案。再也找不到了。

于 2013-03-13T07:51:26.820 回答