【问题标题】:how can I close the UITextView keyboard using the Return key in an app using SpriteKit and Swift?如何在使用 SpriteKit 和 Swift 的应用程序中使用 Return 键关闭 UITextView 键盘?
【发布时间】:2015-03-26 21:44:03
【问题描述】:

我的应用程序使用 SpriteKit,但我也使用 UITextView 来捕获一些用户数据作为游戏的一部分。一切正常,除非我尝试使用 Return 键关闭 UITextView 的键盘。看起来我的代码中的所有内容都可以让键盘以这种方式关闭。我已将 UITextView 设置为自我委托,使用 textView 功能关闭键盘,但没有任何反应。没有报告错误。知道我做错了什么吗?可能是因为我使用了 didMoveToView() 吗?

import SpriteKit
import UIKit

class GameScene: SKScene, UITextViewDelegate {

override func didMoveToView(view: SKView) {
    /* Setup your scene here */

    backgroundColor = SKColor.redColor()

    let myProjectView = UITextView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 200.0))
    myProjectView.center = CGPointMake(300.0, 350.0)
    myProjectView.backgroundColor = UIColor.whiteColor()
    self.view?.addSubview(myProjectView)

    // Close keyboard
    myProjectView.delegate = self

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
        myProjectView.text = textView.text
        println("step 1")
        if text == "\n" {
            println("step 2")
            textView.resignFirstResponder()
            return false
        }
        return true
    }
}

【问题讨论】:

  • 它是否从您的函数中打印出“第 2 步”?在这种情况下。也许尝试self.view.endEditing(true) 而不是textView.resignFirstResponder()
  • 我忘了说,println 语句都没有打印任何东西
  • 你必须在函数 didMoveToView 之外声明你的 func textView

标签: swift keyboard sprite-kit return uitextview


【解决方案1】:

试试这个代码来关闭键盘:

func yourTextView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) -> Bool {
        if (replacementText == "\n")  {
            yourTextView.resignFirstResponder()
            return false
        }
        return true
    }
}

尝试复制并粘贴上述代码。这对我有用。我不确定您的代码中的错误在哪里,但我知道此代码可以关闭键盘,所以请尝试一下。

我希望这可以帮助您解决您遇到的问题。

【讨论】:

  • 他正在使用 textView,(我不是专家)但我认为 UITextView 没有 textViewShouldReturn 委托?
  • 是的。你是对的。我将编辑我的代码。我以为是 UITextField 而不是 TextView。
  • 我尝试了替代代码,但它仍然不起作用。看起来该函数没有被调用,因为我放在 if 上方的第一个 println 没有被调用。我认为这可能与 spritekit 有关?
  • 您是否尝试对 2 println()s 使用 if-else 语句?
【解决方案2】:

将 UITTextView 声明和原始 textView 函数移到 didMoveToView 函数之外获取 Return 键以关闭键盘

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 2014-12-23
    • 2015-04-23
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多