2016-09-16 5 views
4

私はXcodeの8に更新し、今私は私のプロジェクトタイプ「NSObjectの」にはメンバー「コピー」

タイプ「NSObjectの」はメンバー「コピー」を持っていないで、エラーを取得していますがありません。

のXcodeをアップグレードする前に、私はこのエラーを取得していませんでした。

注:私はまだスウィフト2.3を使用しています。私はUILabelをサブクラス化し、ユーザーが長押しのラベルからテキストをコピーできるようにしました。以下は私のコードです。エラーがライン上で発生します。ここでは

if action == #selector(NSObject.copy(_:)) 

は完全なコードです:

class MCCopyableLabel: UILabel { 

    override init(frame: CGRect) { 
    super.init(frame: frame) 
    sharedInit() 
    } 

    required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)! 
    sharedInit() 
    } 

    func sharedInit() { 
    userInteractionEnabled = true 
    addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(MCCopyableLabel.showMenu(_:)))) 
    } 

    func showMenu(sender: AnyObject?) { 
    becomeFirstResponder() 
    let menu = UIMenuController.sharedMenuController() 
    if !menu.menuVisible { 
     menu.setTargetRect(bounds, inView: self) 
     menu.setMenuVisible(true, animated: true) 
    } 
    } 

    override func copy(sender: AnyObject?) { 
    let board = UIPasteboard.generalPasteboard() 
    board.string = text 
    let menu = UIMenuController.sharedMenuController() 
    menu.setMenuVisible(false, animated: true) 
    } 

    override func canBecomeFirstResponder() -> Bool { 
    return true 
    } 

    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool { 
    if action == #selector(NSObject.copy(_:)) { 
     return true 
    } 
    return false 
    } 
} 
+5

それはおそらく 'UIResponder.copy(_ :)'、または単に 'コピ​​ー(_ :)'固定おかげ@dan – dan

+0

する必要がありますそれ!申し訳ありませんが – chickenparm

答えて

2

copyメソッドは、パラメータを取らないので、あなたのようにそれを書く必要があります。

#selector(NSObject.copy) 
1つのパラメータが何のラベルを有していないと方法

表記#selector(NSObject.copy(_:))作品。

+0

は私が密集しているのですが、私の場合はコピー方法は、一つのパラメータの送信者を持っていませんか?また、danのソリューションがこの問題を修正しました。 – chickenparm

+0

@chickenparm、申し訳ありませんが、私は文脈を逃していて、単に 'NSObject'何かを見ていました。 'コピー(_ :)'あなたが探している(明確にダンの答えに記載された)別の 'copy'です。私はあなたのポストでもう少し注意深い視線で気づいたはずです。これは働い – OOPer

0

は、私は同じ問題を持っていたこの

#selector(UILabel.copy(_:)) 
+1

...将来のユースケースのために念頭に置いて、この答えを保管してください。彼がコメントとして加えたdanの解決策も働いた。ありがとう! – chickenparm

2

のようにしてみてください。私はそれを修正:私は、同様のエラータイプ「NSObjectのは」スウィフト3にスウィフト2.2からアップグレードした後、何のメンバー「ペースト」を持っていなかった

#selector(UIResponderStandardEditActions.copy(_:)) 
3

、私はダンのと同じ方法でそれを解決することができました上記のコメント。

スウィフト2

#selector(NSObject.paste(_:)) 

スウィフト3

#selector(paste(_:)) 
+0

ありがとう、スイフト3は私の作品 –

関連する問題