11

UIView に UIButton があります。これは、.xib ファイルから割り当てて初期化した UIViewController にあります。

IBAction を UIButton の「Touch Down」イベントにフックすると、正しくトリガーされます。しかし、「Touch Up Inside」イベントに接続すると反応しません。

他のイベントも機能しません。「タッチドラッグエンター」「タッチドラッグイグジット」「タッチアップアウトサイド」など。タッチダウンのみ。

なぜこれが考えられるのか誰にも分かりますか?


このボタンは、View Controller 内の単純な角丸長方形のボタンです。ビューコントローラーを次のようにロードしました:

-(void) pushNewViewController
{
    MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [self.view addSubview:newViewController.view];
    [newViewController release];
}

IB で、このボタンを丸みを帯びた四角形のボタンに MyViewController に追加しました。次の IBAction を作成しました。

-(IBAction) buttonTouchDown:(id)sender
{
    NSLog(@"Button Touch Down Event Fired.");
}

-(IBAction) buttonTouchUpInside:(id)sender
{
    NSLog(@"Button Touch Up Inside Event Fired.");
}

IB I メニューでボタンをクリックし、Touch Down アウトレットを MyViewController にドラッグして、buttonTouchDown: を選択しました。IB xib を保存しました。

ボタンを実行してテストすると、「ボタンタッチダウンイベントが発生しました」というログメッセージが表示されます。

しかし、IB に戻って Action を Touch Up Inside に変更し、それを buttonTouchUpInside: IBAction に接続して保存します。もう一度テストしますが、応答がありません。

よろしく、リッチ

4

5 に答える 5

20

遅れて申し訳ありませんが、まったく同じ問題があります。私の場合、それはUITapGestureRecognizer親ビューに割り当てられていました。そのため、レコグナイザーも確認することをお勧めします。

于 2012-07-26T11:09:15.643 に答える
6

newViewController をリリースしています。

newViewController.view をサブビューとして追加するとビューは保持されますが、newViewController オブジェクトの保持カウントは 0 になります。

于 2011-03-04T00:12:07.453 に答える
2

MyViewController のコードにタッチ イベント ハンドラを実装していますか?

あなたの UIButton は touchesBegan イベントのみを受け取り、イベントは touchesEnded を受け取る前に何かによってキャンセルされるようです。

UIScrollView のようなものは通常、サブビューに転送する必要があるタッチと、それ自体で処理する必要があるドラッグを決定するときに行います。

于 2011-03-20T11:51:18.803 に答える
2

あなたは節約について言及しました。変更を行った後、xib ファイルと MyViewController ファイルの両方を保存しましたか? このようなことが機能しなくなった場合、IB の xib も XCode のクラス ファイルも保存していないことがよくあります。

于 2011-01-08T20:18:45.277 に答える
0

Lolこれはばかげた解決策でしたが、xibでは、外部のbuttonTouchUpにリンクしていたため、問題が発生していました。多分これは役立つでしょう:)

于 2011-08-18T14:03:01.217 に答える