首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法与UIStepper交互

无法与UIStepper交互
EN

Stack Overflow用户
提问于 2014-12-05 05:17:45
回答 1查看 738关注 0票数 0

我根据用户的喜好,以编程方式添加了一些UISteppers和UITextFields。然而,我似乎不能让UIStepper触摸点击-/+按钮上的触摸似乎没有注册。我尝试将userTriggers UIView的用户交互设置为禁用,但不起作用。

1)我还可以尝试什么?

2)我还需要能够递增相应的UITextField,然后将其写入我的UserData.plist文件,但我不确定如何访问每个字段。我应该将它们添加到某种类型的数组中吗?

代码语言:javascript
复制
import UIKit

class TriggersViewController: UIViewController{

@IBOutlet var userTriggers:UIView!
@IBOutlet var saveButton:UIButton!

var triggersList:Array<String>!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    loadTriggers()
    var prevInput = 250;
    for index in 0..<triggersList.count{

        //label for trigger
        var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
        label.center = CGPointMake(120, CGFloat(prevInput))
        label.textAlignment = NSTextAlignment.Left
        label.text = triggersList[index]
        userTriggers.addSubview(label)

        //input box for trigger
        var input = UITextField(frame: CGRectMake(0, 0, 50, 21))
        input.center = CGPointMake(250, CGFloat(prevInput))
        input.text = "0";
        //add input to triggersView
        userTriggers.addSubview(input);

        //UIStepper
        var stepper = UIStepper(frame: CGRectMake(0, 0, 50, 21))
        stepper.center = CGPointMake(300, CGFloat(prevInput))
        stepper.addTarget(self, action: "stepperValueChanged:", forControlEvents: .ValueChanged)
        stepper.enabled = true
        //add stepper to triggersView
        userTriggers.addSubview(stepper);


        prevInput += 50 //increment for height

    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func stepperValueChanged(sender:UIStepper!){
    println("It Works, Value is --&gt;\(Int(sender.value).description)")
}

func loadTriggers(){
    var myDict: NSDictionary?

    if let path = NSBundle.mainBundle().pathForResource("UserConfigs", ofType: "plist") {
        myDict = NSDictionary(contentsOfFile: path)
    }
    if let dict = myDict {
        triggersList = dict["Triggers"] as Array<String>
    }
}

}

EN

回答 1

Stack Overflow用户

发布于 2014-12-05 05:26:35

实际上,您需要将superview上的用户交互设置为enabled。有关更多信息,请查看此处:UIView -- "user interaction enabled" false on parent but true on child?

另外,re:第二个问题访问每个字段的一种简单(但不是很理想)的方法是使用标签。简单的方法是使用枚举定义标记。然后使用viewWithTag访问这些字段。

然而,还有比标签更好的方法(例如,它们不是很可靠,因为任何视图都可以被赋予任何标签)。但是,如果只有几个文本域/步进器,那么您可以很容易地为每个文本域/步进器添加属性。最好的解决方案是将步进器和字段分组到一个UIView子类中(假设它们相邻),并将对这些分组的引用存储在视图控制器中(可能存储在一个数组中)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27304262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档