ボタンをクラス1で作り、タップ機能があり
クラス2ではスワイプしたらの機能を作っていて
スワイプし終わり、ある場所以外は元の位置に戻る・・・
と言うものを作っていて、クラスが別なので
クラス2の方ではボタンを宣言してないので波線が出てきます。
そこでボタンをデリゲートに入れたのですが、エラーがでます。
コードは・・・
class save: UIViewController{
var hozon = CustomButton(type: .Custom)
var add:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
add.hozon.frame = (frame: CGRectMake(145,290,250,250))
add.hozon.setBackgroundImage(UIImage(named: "Chiba paper1.png"),forState: UIControlState.Normal)
add.hozon.addTarget(self, action: #selector(save.buttonPressed(_:)), forControlEvents:.TouchUpInside)
add.hozon.userInteractionEnabled = true
add.hozon.tag = 1
add.hozon.removeRect = Trash_can.frame
view.addSubview(hozon)
func buttonPressed(sender: UIButton) {
if !add.hozon.isMoveing && sender.tag == 1 {
view.addSubview(configuration)
}
class CustomButton: UIButton {
var isMoveing : Bool = false
var removeRect: CGRect!
var position : CGPoint!
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesBegan(touches, withEvent: event) position = self.frame.origin } override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesMoved(touches, withEvent: event) isMoveing = true let touchEvent = touches.first! // ドラッグ前の座標 let preDx = touchEvent.previousLocationInView(superview).x let preDy = touchEvent.previousLocationInView(superview).y // ドラッグ後の座標 let newDx = touchEvent.locationInView(superview).x let newDy = touchEvent.locationInView(superview).y // ドラッグしたx座標の移動距離 let dx = newDx - preDx // ドラッグしたy座標の移動距離 let dy = newDy - preDy // 画像のフレーム var viewFrame: CGRect = self.frame // 移動分を反映させる viewFrame.origin.x += dx viewFrame.origin.y += dy self.frame = viewFrame } override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesEnded(touches, withEvent: event) if let rect = removeRect where CGRectIntersectsRect(self.frame, rect) { self.removeFromSuperview() }else{
// add.hozon.frame.origin.y = 910
// add.hozon.frame.origin.y = 150
}
isMoveing = false if position == self.frame.origin { self.sendActionsForControlEvents(.TouchUpInside)} }
を使って作成しています。
デリゲートではなくても
他に良い方法がありましたら
どうか教えてください、お願い致します。
回答1件
あなたの回答
tips
プレビュー