0

がありますUITextField。タッチに応答しないようにする必要があります。これは にUITableViewCellあり、ユーザーが に触れたときにtextFielddidSelectRowAtIndexPath呼び出されないためです。

この textField にはクリア ボタンもあります。残りの textField 領域ではなく、クリア ボタンでのみユーザーのテーピングを検出する必要があります。

やってみましたtextField.userInteractionEnabled = NO。この場合、もちろんクリアボタンは機能しません。textField.enabled = NO;

 UITextField *textField = [[UITextField alloc] initWithFrame:someFrame];
 textField.textAlignment = NSTextAlignmentLeft;
 textField.clearButtonMode = UITextFieldViewModeAlways;
 textField.delegate = self;

助けてください。

前もって感謝します。

4

2 に答える 2

0

その場合、1 つの回避策を使用できます。テキストフィールドのテキスト領域をマスクするビューを作成する必要がありますが、このようなボタンをクリアする必要はありません

私たちはそれを仮定します

someFrame = (20,50,100,44)

テキストフィールドボタン周り20*20

したがって、私たちの見解は

UIView *maskView = [[UIView alloc] initWithFrame: CGRectMake (20,50,80,44)]; 
maskView.backgroundColor = [UIColor clearColor];

テキストフィールドを追加した後に、このビューを追加してください。そして、テキストに使用されていたテキストフィールドの領域をマスクし、ボタン領域をそのまま残します。

これはテストされておらず、単なる回避策であることを忘れないでください。したがって、それを使用することをお勧めする以外の方法はあります。必要に応じて値を変更します。

于 2013-05-30T14:02:44.810 に答える
0

ペン先からセルをロードしていますか?以下のような独自のカスタムセルを作成しようとしました ここに画像の説明を入力

uitextfield にタグを割り当てる (私のサンプルでは 9 です)

viewForCellAtIndex

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell ;

        cell = [tableView dequeueReusableCellWithIdentifier:@"purchaseNibCell"];
        if (cell == nil) {
            [[NSBundle mainBundle] loadNibNamed:@"PurchaseNibCell" owner:self options:nil];
            cell                    =   self.purchaseCell;
            self.purchaseCell       =   nil;

        }
        UITextField *text           =   (UITextField*)[cell viewWithTag:9];
        text.enabled                =   NO; <------ if you have not done in the xib file.
        cell.backgroundView         =   [[CustomCellBackground alloc] init];
        UIImageView *accessoryView  =   [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"accessory.png"]];
        cell.accessoryView          =   accessoryView;

    return cell;
}

それが役に立てば幸い

于 2013-05-30T14:14:14.033 に答える