让函数等待响应-Swift
我正在尝试编写一个文本冒险。我有一个NSTextView,用户可以在其中编写命令并获得响应,但我找不到“暂停”函数以等待用户响应的方法让函数等待响应-Swift,swift,response,wait,adventure,Swift,Response,Wait,Adventure,我正在尝试编写一个文本冒险。我有一个NSTextView,用户可以在其中编写命令并获得响应,但我找不到“暂停”函数以等待用户响应的方法 import Cocoa @IBOutlet var textView: NSTextView! var playerName:String = "" var enteredString:String = "" //Keyboard Input private func returnChar(theEvent: NSEvent) -> Charac
import Cocoa
@IBOutlet var textView: NSTextView!
var playerName:String = ""
var enteredString:String = ""
//Keyboard Input
private func returnChar(theEvent: NSEvent) -> Character?{
let s: String = theEvent.characters!
for char in s{
return char
}
return nil
}
override func keyUp (theEvent: NSEvent) {
let s: String = String(self.returnChar(theEvent)!)
enteredString.extend(s)
if theEvent.keyCode == 36 {
//Here I'd like to
//say that start()
//should continue
}
}
//Story
func start() {
textView.string?.extend("Hi, what's your name?\n")
//Here I'd like to
//wait for the
//users response
playerName = enteredString
textView.string?.extend("Are you sure that I should call you \(playerName)")
}
感谢您的回复:D如果您使用的是Swift 2,则可以使用readLine(),等待用户在命令行中按enter键。它返回字符串?因为用户可以在不键入任何内容的情况下按enter键。我建议在
NSTextView中等待输入不是一个好策略
如果你有一个方法知道你的应用程序处于什么状态呢?然后,每当您获得想要使用的文本时,将其发送到该方法,并让它根据状态决定如何使用它(名称、命令…)。同时,您的应用程序刚刚返回到运行循环,允许用户做他们想做的事情。添加UITextField委托和一个UITextField以供用户输入。将UITextField委托设置为self并添加方法:“textFieldShouldReturn”
在这个方法中,只要用户输入了内容,就可以处理逻辑。
以下是一个简短的片段:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
var userInputTextField: UITextField?
override func viewDidLoad() {
super.viewDidLoad()
userInputTextField = UITextField(frame: CGRectMake(0, 100, view.frame.width, 100))
userInputTextField?.delegate = self
userInputTextField?.returnKeyType = UIReturnKeyType.Done
view.addSubview(userInputTextField!)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
println(textField.text)
return true
}
}