很抱歉,如果这是一个愚蠢的问题。我似乎无法让我的滑块在与之交互时更新其值。 (我将把每个人都指向这段长代码中的最后一个方法)
class CustomSlider: UISlider {
override func trackRect(forBounds bounds: CGRect) -> CGRect {
var rect = super.trackRect(forBounds: bounds)
rect.size.height = 7
return rect
}
}
class FactionButton: CustomSlider {
var factionSlider = CustomSlider(frame: CGRect(x: 15, y: 542, width: 386, height: 57))
func factionBalanceSlider(){
factionSlider.minimumValueImage = #imageLiteral(resourceName: "Alliance Slider")
factionSlider.maximumValueImage = #imageLiteral(resourceName: "Horde Slider")
factionSlider.setThumbImage(#imageLiteral(resourceName: "Thumb Image"), for: .normal)
factionSlider.minimumTrackTintColor = UIColor(red:0.08, green:0.33, blue:0.69, alpha:0.8)
factionSlider.maximumTrackTintColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:0.59)
factionSlider.setValue(0.5, animated: true)
factionSlider.isContinuous = false
factionSlider.addTarget(self, action: #selector(recordFactionBalance(sender:)), for: .valueChanged)
}
func getSlider() -> CustomSlider {
return factionSlider
}
override func trackRect(forBounds bounds: CGRect) -> CGRect {
var customBounds = super.trackRect(forBounds: bounds)
customBounds.size.height = 10
return customBounds
}
@objc func recordFactionBalance(sender: CustomSlider){
//also calculates balance and adds it into the quiz data
print("hi")
print(sender.value) //It's this part that doesn't work
}
}
这是最接近问题底部的位置。 (其他都很好)动作功能似乎根本没有被触发,即使我正在与之交互。这两个打印语句均未执行。有什么想法吗?
欢呼
答案 0 :(得分:0)
我可以从getSlider()
中猜测您正在使用此class
作为实用程序来获取CustomSlider
。因此,我怀疑您是按照以下方式将滑块添加到view
,
let container = FactionButton()
container.factionBalanceSlider()
let slider = container.getSlider()
self.view.addSubview(slider)
如果您不将container
添加到view
中,而.valueChange
被设置为container
事件的接收者,那么它将不会得到任何事件。要接收事件,您还需要在view
中添加self.view.addSubview(container)
,如下所示,
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script>
$(document).ready(function(){
var classCounter = $('.style_prevu_kit').length; // count of all style_prevu_kit classes
var activeIndex = 0; //set active index to first style_prevu_kit class
$('body').keydown(function(e) {
var code = e.keyCode || e.which;
if (code == 9) { // 9 is code for the [tab] key
e.preventDefault(); // prevents [tab] key default behaviour
$('.style_prevu_kit').eq(activeIndex-1).removeClass('active');
$('.style_prevu_kit').eq(activeIndex++).addClass('active');
if(activeIndex>classCounter-1){
activeIndex = 0;
} // reset active index when it exceeds number of class elements
}
});
$(".style_prevu_kit").on("mouseover", function() {
console.log($('.style_prevu_kit').index($(this)));
$('.style_prevu_kit').each(function(){
$(this).removeClass('active');
})
activeIndex = 0;
}); //reset Index when manual mouse hover activated
}) //end document ready
</script>
<link href='https://fonts.googleapis.com/css?family=Roboto:100,400,300,500,700' rel='stylesheet' type='text/css'>
<style>
.fond{position:absolute;padding-top:85px;top:0;left:0; right:0;bottom:0;
background-color:#00506b;}
.style_prevu_kit
{
display:inline-block;
border:0;
width:196px;
height:210px;
position: relative;
-webkit-transition: all 200ms ease-in;
-webkit-transform: scale(1);
-ms-transition: all 200ms ease-in;
-ms-transform: scale(1);
-moz-transition: all 200ms ease-in;
-moz-transform: scale(1);
transition: all 200ms ease-in;
transform: scale(1);
overflow: hidden;
}
.style_prevu_kit:hover
{
box-shadow: 0px 0px 150px #000000;
z-index: 2;
-webkit-transition: all 200ms ease-in;
-webkit-transform: scale(1.5);
-ms-transition: all 200ms ease-in;
-ms-transform: scale(1.5);
-moz-transition: all 200ms ease-in;
-moz-transform: scale(1.5);
transition: all 200ms ease-in;
transform: scale(1.5);
border:2px solid green;
height: 300px;
}
.active{
box-shadow: 0px 0px 150px #000000;
z-index: 2;
-webkit-transition: all 200ms ease-in;
-webkit-transform: scale(1.5);
-ms-transition: all 200ms ease-in;
-ms-transform: scale(1.5);
-moz-transition: all 200ms ease-in;
-moz-transform: scale(1.5);
transition: all 200ms ease-in;
transform: scale(1.5);
border:2px solid green;
height: 300px;
}
</style>
<div align="center" class="fond">
<div style="width:1000px;">
<div class="style_prevu_kit active" style="background-color:#cb2025;">
<ul>
<li>hello world1</li>
<li>hello world2</li>
<li>hello world3</li>
<li>hello world4</li>
<li>hello world5</li>
<li>hello world6</li>
<li>hello world7</li>
<li>hello world8</li>
<li>hello world9</li>
<li>hello world10</li>
<li>hello world11</li>
<li>hello world12</li>
<li>hello world13</li>
<li>hello world14</li>
<li>hello world15</li>
</ul>
</div>
<div class="style_prevu_kit" style="background-color:#f8b334;">
<ul>
<li>hello world1</li>
<li>hello world2</li>
<li>hello world3</li>
<li>hello world4</li>
<li>hello world5</li>
<li>hello world6</li>
<li>hello world7</li>
<li>hello world8</li>
<li>hello world9</li>
<li>hello world10</li>
<li>hello world11</li>
<li>hello world12</li>
<li>hello world13</li>
<li>hello world14</li>
<li>hello world15</li>
</ul>
</div>
<div class="style_prevu_kit" style="background-color:#97bf0d;">
<ul>
<li>hello world1</li>
<li>hello world2</li>
<li>hello world3</li>
<li>hello world4</li>
<li>hello world5</li>
<li>hello world6</li>
<li>hello world7</li>
<li>hello world8</li>
<li>hello world9</li>
<li>hello world10</li>
<li>hello world11</li>
<li>hello world12</li>
<li>hello world13</li>
<li>hello world14</li>
<li>hello world15</li>
</ul>
</div>
<div class="style_prevu_kit" style="background-color:#00a096;">
<ul>
<li>hello world1</li>
<li>hello world2</li>
<li>hello world3</li>
<li>hello world4</li>
<li>hello world5</li>
<li>hello world6</li>
<li>hello world7</li>
<li>hello world8</li>
<li>hello world9</li>
<li>hello world10</li>
<li>hello world11</li>
<li>hello world12</li>
<li>hello world13</li>
<li>hello world14</li>
<li>hello world15</li>
</ul>
</div>
<div class="style_prevu_kit" style="background-color:#93a6a8;">
<ul>
<li>hello world1</li>
<li>hello world2</li>
<li>hello world3</li>
<li>hello world4</li>
<li>hello world5</li>
<li>hello world6</li>
<li>hello world7</li>
<li>hello world8</li>
<li>hello world9</li>
<li>hello world10</li>
<li>hello world11</li>
<li>hello world12</li>
<li>hello world13</li>
<li>hello world14</li>
<li>hello world15</li>
</ul>
</div>
</div>
</div>