gpt4 book ai didi

ios - 将多个手势识别器分配给 AnyObject 时出错

转载 作者:行者123 更新时间:2023-11-29 01:04:35 24 4
gpt4 key购买 nike

大家好,我目前迷失在这个错误中,这是我第一次处理 IOS 和 Swift,虽然我已经能够使用一个手势识别器来查看我需要为任何对象设置多个手势识别器( component.control 有AnyObject 类型),当我运行它并按下按钮(作为 AnyObject 类型传递)时,我在 appDelegate.swift 文件中得到了这个错误

line 1: class AppDelegate: UIResponder, UIApplicationDelegate{  //Thread 1: EXC_BAD_ACCESS (code=1,address=0x1)

任何帮助将不胜感激!谢谢!

这是我的 重写 func viewDidLoad() { super.viewDidLoad()

    //gestures  
let gesture_tap = UITapGestureRecognizer(target: self, action: #selector(ComponentDetailViewController.ctrl_tapped(_:event:)));
let gesture_pinch = UIPinchGestureRecognizer(target: self, action: #selector(ComponentDetailViewController.ctrl_pinched(_:event:)));
let gesture_swipe = UISwipeGestureRecognizer(target:self, action: #selector(ComponentDetailViewController.ctrl_swiped(_:event:)));
let gesture_longPress = UILongPressGestureRecognizer(target: self, action: #selector(ComponentDetailViewController.ctrl_longPressed(_:event:)));
let gesture_rotate = UIRotationGestureRecognizer(target:self,action: #selector(ComponentDetailViewController.ctrl_rotated(_:event:)));
let gesture_pan = UIPanGestureRecognizer(target:self, action: #selector(ComponentDetailViewController.ctrl_panned(_:event:)));

let ctrl = component?.control;

ctrl!.addGestureRecognizer(gesture_tap);
ctrl!.addGestureRecognizer(gesture_pinch);
ctrl!.addGestureRecognizer(gesture_swipe);
ctrl!.addGestureRecognizer(gesture_longPress);
ctrl!.addGestureRecognizer(gesture_rotate);
ctrl!.addGestureRecognizer(gesture_pan);

gesture_tap.delegate = self;
gesture_pinch.delegate = self;
gesture_swipe.delegate = self;
gesture_longPress.delegate = self;
gesture_rotate.delegate = self;
gesture_pan.delegate = self;


component?.control = ctrl as? UIView;

//component?.control!.userInteractionEnabled = true;
//component?.control!.addGestureRecognizer(tap);
viewDisplayComponent.addSubview((component?.control)! as! UIView);

}


//Gesture methods
func ctrl_tapped(ctrl: AnyObject, event:UIEvent){
setMessage("TO_tapped");
}
func ctrl_pinched(ctrl: AnyObject, event:UIEvent){
setMessage("TO_pinchedWithArgs")
}
func ctrl_swiped(ctrl: AnyObject, event:UIEvent){
setMessage("TO_swipedWithArgs");
}
func ctrl_longPressed(ctrl: AnyObject, event:UIEvent){
setMessage("TO_longPressedWithArgs");
}
func ctrl_rotated(ctrl: AnyObject, event:UIEvent){
//logTextView.text += "Rotated";
}
func ctrl_panned(ctrl: AnyObject, event:UIEvent){
setMessage("TO_pannedWithArgs");
}

最佳答案

根据docs :

The action methods invoked must conform to one of the following signatures:

  • (void)handleGesture;
  • (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;
    Swift translation:
    handleGesture(gestureRecognizer: UIGestureRecognizer)

然而,您所有的操作方法都有带有两个参数的签名。我不确定您是如何让一个手势识别器工作的。

i get just this error in the appDelegate.swift file:

line 1: class AppDelegate: UIResponder, UIApplicationDelegate{ //Thread 1: EXC_BAD_ACCESS (code=1,address=0x1)

Xcode 调试区输出的顶部,即输出 print() 语句的地方呢?

关于ios - 将多个手势识别器分配给 AnyObject 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com