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もうまくいきません。

もう1つ、これはios 5では正常に機能しますが、ios 6では機能しません。

解決策があれば教えてください。

前もって感謝します!!!

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 に答える