我正在尝试将方法注册为视图控制器中CultureInfo ci = new CultureInfo("en-US");
Console.WriteLine(ci.LCID);
的操作。目标视图是我使用UISwipeGestureRecognizer
子类构建的自定义视图,因为我想要滑动目标。我遇到的问题是我不知道如何将操作设置为UIView
中的方法。当我将手势拖放到界面构建器中的视图时,我可以执行此操作,然后将操作拖出到控制器。
UIViewController
我也尝试过使用
func swiped(_ sender: UISwipeGestureRecognizer) {
}
func addGestureToView(_ view: CardView) {
let gesture = UISwipeGestureRecognizer(target: view, action: Selector("swiped:"))
gesture.direction = .up
view.addGestureRecognizer(gesture)
}
这两种方法都给我以下例外:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [testapp.CardView swiped:]:无法识别的选择器发送到实例
我认为这是因为它在let gesture = UISwipeGestureRecognizer(target: view, action: #selector(swiped(_:)))
目标中寻找swiped:
,而不是在Controller中存在的方法。我如何指定我希望它将控制器用于操作,同时将手势本身仅应用于CardView
?
答案 0 :(得分:1)
更改此行:
let gesture = UISwipeGestureRecognizer(target: view, action: Selector("swiped:"))
为:
let gesture = UISwipeGestureRecognizer(target: self, action: #selector(swiped(_:)))
<强>解释强>
UISwipeGestureRecognizer中的target:定义了调用操作方法的位置,通过定义self我们告诉我们应该从UIViewcontroller而不是从CardView调用我们的滑动手势动作
UISwipeGestureRecognizer中的操作定义了应在滑动手势上调用的方法。