1

カスタムセルを持つテーブルビューを作成しました(サブクラス化しましたUITableViewCell)。
その中でいくつか作成UIButtonsしています。.h ファイルでこれを宣言します。

@property (nonatomic, strong) UIButton *myButton;

そしてこれは.mファイルにあります:

myButton = [[UIButton alloc] initWithFrame:CGRectMake(-100.0, 285.0, 60.0, 30.0)];
myButton.titleLabel.font = [UIFont boldSystemFontOfSize:16.0];
myButton.backgroundColor = [UIColor clearColor];
[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[myButton setTitle:@"text" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:myButton];

を使用してセルを右に移動するUIPanGestureRecognizerと、が表示されます (負の X indexUIButtonにあることに注意してください)。見ることはできますが、クリックできません (ビューに表示されなくなったと思います)。 クリック可能にする方法について何か提案はありますか?

詳細:
セルの初期化で、私はやっています:

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
panGesture.delegate = self;
[self.contentView addGestureRecognizer:panGesture];

次に、ジェスチャーを実装しました。

-(void)handlePanGesture:(UIPanGestureRecognizer *)sender {
    CGPoint translate = [sender translationInView:self.contentView];
    CGRect currentFrame = self.contentView.frame;
switch ([sender state]) {        
    case UIGestureRecognizerStateChanged:

        currentFrame.origin.x = translate.x;
        self.contentView.frame = currentFrame;

        break;
    default:
        break;
}    
}

フレームが右に移動すると、ボタンが表示されます。でもクリックできない…

4

1 に答える 1

4

ボタンのフレームが親のフレームの外側にある場合、ボタンはタッチを登録しません。この場合、フレームの x 位置が -100 に設定されると、ボタンが機能しなくなると述べています。タッチ領域の外にあるため、これは理にかなっています。

実装したパンジェスチャはセルのビューを移動するため、ボタンが画面に表示される場合がありますが、セルのビューの外側にあるため、タッチを受け取ることができません。

これを修正するための 1 つの可能な提案は、最初からセルを大きくすることです。たとえば、セルのフレーム サイズが現在 0,0,320,44 の場合、代わりに -100,0,420,44 にして、それに応じてセルのコンテンツを配置できます。これで、ボタンのフレームが 0,0,x,y に変わり、セルのビューの内側になり、タッチを受け取ることができます。

于 2012-09-10T15:21:56.163 に答える