0

アプリの開発中に奇妙なことが起こりました。いくつかの UIButtons を含むビューがあります。すべてがカスタム アートワークを使用しており、CostumType の UIButton です。私にとっては、すべてが正しいと感じました。シミュレーターと電話で。

しかし、アプリを他の人に渡すと、その人がボタンをタップしても機能しません。ボタンは特定のタップに対する反応のように感じますが、実際には正しくありません (通常の動作と比較すると)。

正常に動作させるにはどうすればよいですか?通常とは、iOS アプリに慣れている人が、機能すること以外は同じように使用できることを意味します。

ボタンのコード例を次に示します。

focusButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [focusButton setFrame:CGRectMake(self.bounds.size.width-(self.bounds.size.width/widthFactor)+108, self.bounds.origin.y+(self.bounds.size.height/(heightFactor*2))+2, 36, 40)];
    focusButton.contentHorizontalAlignment = false; // I think these lines doesn't effect the behavior
    focusButton.contentVerticalAlignment = false;
    [focusButton setBackgroundImage:[UIImage imageNamed:@"arrowUp.png"] forState:UIControlStateNormal];
    [focusButton setBackgroundImage:[UIImage imageNamed:@"arrowUpH.png"] forState:UIControlStateHighlighted];
    [focusButton addTarget:self action:@selector(focusOrDefocusCourse) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:focusButton];

ボタンの背景は次のようになります。 ボタン

4

2 に答える 2

2

これは正常に動作しています..一度フレームでテストしてください..

UIButton *btn_foucs = [UIButton buttonWithType:UIButtonTypeCustom];

[btn_foucs setFrame:CGRectMake(20, 20, 200, 40)];

[btn_foucs setImage:[UIImage imageNamed:@"btn_erase.png"] forState:UIControlStateNormal];

[btn_foucs setImage:[UIImage imageNamed:@"btn_erase_h.png"] forState:UIControlStateHighlighted];

[self.view addSubview:btn_foucs];
于 2012-10-05T04:33:00.710 に答える
1

UIButton プロパティを参照してくださいimageEdgeInsets。これにより、画像をフレームの一部のみに描画できるようになり、タッチ可能な領域が画像自体よりも大きくなります (ボタンを「見逃す」可能性を減らします)。たとえば、次のことができます。

int touch_offset = 10;
[focusButton setFrame:CGRectMake(self.bounds.size.width-(self.bounds.size.width/widthFactor)+108-touch_offset, self.bounds.origin.y+(self.bounds.size.height/(heightFactor*2))+2-touch_offset, 36+(touch_offset*2), 40+(touch_offset*2))];
focusButton.imageEdgeInsets = UIEdgeInsetsMake(touch_offset, touch_offset, touch_offset, touch_offset);

これにより、タッチ可能な領域が両側の画像よりも 10 ピクセル広くなり、 touch_offset 値を変更することで調整できます。一般的なガイドラインとして、Apple は 44x44 ピクセル以上のタッチ可能領域を使用することを推奨しています。

于 2012-10-05T03:26:54.500 に答える