Xcode 6.3.在实现UITextFieldDelegate协议的类中,我想重写touchesBegan()方法以隐藏键盘.如果我在函数规范中避免编译器错误,那么尝试从Set或NSSet读取"touch"时会出现编译错误,否则super.touchesBegan(touches,withEvent:event)会抛出错误.在Xcode 6.2中编译的这些组合之一!(那么Swift"Set"的文档在哪里以及如何从一个元素中获取元素?)
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
// Hiding the Keyboard when the User Taps the Background
if let touch = touches.anyObject() as? UITouch {
if nameTF.isFirstResponder() && touch.view != nameTF {
nameTF.resignFirstResponder();
}
}
super.touchesBegan(touches , withEvent:event)
}
Run Code Online (Sandbox Code Playgroud)
尝试:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) or
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent)
Run Code Online (Sandbox Code Playgroud)
编译器错误:使用选择器'touchesBegan:withEvent:'的覆盖方法具有不兼容的类型'(NSSet,UIEvent) - >()'和
super.touchesBegan(touches , withEvent:event)
Run Code Online (Sandbox Code Playgroud)
还抱怨
'NSSet'不能隐式转换为'Set'; 你的意思是使用'as'来明确转换?
尝试:
override func touchesBegan(touches: Set<AnyObject>, withEvent event: UIEvent)
Run Code Online (Sandbox Code Playgroud)
编译器错误:类型'AnyObject'不符合协议'Hashable'
尝试:
override func …Run Code Online (Sandbox Code Playgroud) 今天我用Swift 1.2更新了xcode我的代码在Swift 1.1上工作得很好但是当我更新时我得到了这个错误:
'Set'没有名为'anyObject'的成员
这是我的代码:
override public func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let location:CGPoint? = touches.anyObject()?.locationInView(self)
if let loc = location {
if (!CGRectContainsPoint(ScaleRect(self.bounds, n: 2.0), loc)) {
self.highlighted = false
}
}
}
Run Code Online (Sandbox Code Playgroud)
你们有一个想法,我该如何解决这个问题?
我检查了我的旧游戏,我想在Swift 2.0中更新它.当我试图修复它时,Xcode发现了一个错误.错误是类型'Set'的值在此代码行中没有成员'anyObject':
var touch:UITouch = touches.anyObject() as! UITouch
Run Code Online (Sandbox Code Playgroud)
功能:
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.runAction(SKAction.playSoundFileNamed("torpedo.mp3", waitForCompletion: false))
var touch:UITouch = touches.anyObject() as! UITouch //<-- Here is Error
var location:CGPoint = touch.locationInNode(self)
var torpedo:SKSpriteNode = SKSpriteNode(imageNamed: "torpedo")
torpedo.position = player.position
torpedo.physicsBody = SKPhysicsBody(circleOfRadius: torpedo.size.width/2)
torpedo.physicsBody!.dynamic = true
torpedo.physicsBody!.categoryBitMask = photonTorpedoCategory
torpedo.physicsBody!.contactTestBitMask = alienCategory
torpedo.physicsBody!.collisionBitMask = 0
torpedo.physicsBody!.usesPreciseCollisionDetection = true
var offset:CGPoint = vecSub(location, b: torpedo.position)
if (offset.y < 0){
return
self.addChild(torpedo)
var direction:CGPoint = …Run Code Online (Sandbox Code Playgroud) swift ×3
ios ×2
member ×1
named ×1
object ×1
objective-c ×1
overriding ×1
skspritenode ×1
sprite-kit ×1
swift2 ×1
uitouch ×1