2011-08-27 6 views
5

self.view以外のビューのサブビューとしてスライダを追加すると、動作しません(スライドしません)が、 self.viewのサブビューです。 self.view以外の他のビューでも見ることができますが、動作しません。UIViewのサブビューになるとUISliderは動作しませんother.book

alphaSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 90, 10)]; 
    [alphaSlider setMinimumValue:0.01]; 
    [alphaSlider setMaximumValue:1]; 
    [alphaSlider setValue:0.5]; 
    [alphaSlider setUserInteractionEnabled:YES]; 
    [alphaSlider addTarget:self action:@selector(alphaSliderDidChange:) forControlEvents:UIControlEventValueChanged]; 
    alphaSlider.continuous = YES; 
[submenu addSubview:alphaSlider]; 

これを修正する方法:ここで

は私のコードですか?

答えて

9

ユーザーの操作がサブメニューで有効になっていない可能性があります。

[submenu setUserInteractionEnabled:YES]; 

別の可能性は、スライダのフレームがUIViewsのclipsToBoundsプロパティがデフォルトNOであるので、スライダーはサブメニューの枠の外にあるにもかかわらず、クリップされないであろう外submenu.frame

のであるということです。これは、サブメニューのフレームがスライダーをカバーしていないことを意味し、サブメニューからサブメニューのスライダーにタッチイベントを渡す方法はありません。サブメニューの背景色を設定し、スライダがサブメニューの枠内に完全に配置されていることを確認します。

[submenu setBackgroundColor:[UIColor blueColor]]; 

サブメニューのフレームは、(0、0、0、0)のようなものかもしれません。

はあなたにも

[submenu setClipsToBounds:YES]; 

を行うことができ、スライダーが消える場合は、サブメニューのフレームが不良である

NSLog(@"%f, %f, %f, %f", submenu.frame.origin.x, submenu.frame.origin.y, submenu.frame.size.width, submenu.frame.size.height); 

を含めます。

6

スライダのフレームの高さが小さすぎて相互作用できないことを確認します。おそらく10ptが小さすぎます。

iOS 8以降、スライダーの動作も停止しました。

以前は、UISlider、UISwitch、UIPickerViewなどのUIViewのフレームの高さが、あらかじめ定義された値に固定されていました。フレームの高さは設定できますが、無視されます。 「iPad/iPhoneのLandscapeでUISliderの高さは何ですか?」と覚えようとするのではなく、高さを0に設定してOSにデフォルト値を割り当てさせていました。

David Braun's答え私のUISliderフレームの高さが0であり、ユーザーの操作ができなくなったことに気付いた。

+0

自分自身でフレームサイズをチェックすることは決して考えなかったでしょう。 +1 – oarfish

+0

ありがとうございました。私の場合、スライダーが問題を引き起こしていたスタックビュー内にありました。ちょうど高さの制約を加え、スライダーとそれが働いたときの抱擁&圧縮抵抗値を加えました。 – niks

-1

私は同様の問題を抱えていました。スライダーには水平線がなく、白いボタンだけがあり、まったく反応しませんでした。 上記に基づいて、私のスライダーは私の安全区域よりも広いとわかりました。 2つの側面にいくつかの制約を設定し、今はうまく動作します。

関連する問題