XCode 7.1 模拟器 - 6s iPhone 模型的行为与所有其他模型不同
XCode 7.1 Simulator - 6s iPhone model behaving differently than all others
模拟器上的奇怪行为。
视图控制器有一个文本字段。选择文本字段时,键盘会出现并且视图会向上移动,以便用户可以访问屏幕底部的按钮。在文本字段外按下,键盘消失,视图向下移动。很基本的东西。
最近,当我在iPhone 6s 模拟器上运行 应用程序时,选择文本框使视图向下移动,并且没有出现键盘。此外,在字段外按下会使视图进一步向下移动。它曾经工作正常。这是最近才开始的,我不记得进行过任何会导致问题的代码更改。
有趣的是,这只发生在 运行使用 6s 模拟器时。 4s、5、5s、6、6 Plus 和 6S Plus 都可以正常工作。此外,在实际的 6s 设备上 运行ning 时它工作正常。就是6s模拟器有点古怪
还有其他人遇到过类似的问题吗?知道如何解决这个问题吗?这是我的代码,以防万一。但如果这是一个编码问题,我会感到惊讶。谢谢!
import Foundation
import UIKit
import Parse
let defaults = NSUserDefaults.standardUserDefaults()
var verificationCode : String = String()
class VerificationEntry: UIViewController {
var keyboardInt = 0
@IBOutlet var buttonToBottom: NSLayoutConstraint!
@IBOutlet var textfieldToSubmit: NSLayoutConstraint!
@IBOutlet var titleToBottom: NSLayoutConstraint!
@IBOutlet var verify: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
defaults.setObject("Coding Explorer", forKey: "userNameKey")
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
self.deviceSize()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
let verInt = defaults.valueForKey("VerInt") as! Int
if verInt < 1 {
let alert = UIAlertController(title: "Thank You", message: "A verification code will be emailed to you, pending approval.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
defaults.setInteger(1, forKey: "VerInt")
}
}
@IBAction func submitVerification(sender: AnyObject) {
verificationCode = verify.text!
let userCode = defaults.stringForKey("userCode")
var parseCode : String = String()
do {
let predicate = NSPredicate(format:"UserNumber = %@", userCode!)
let query = PFQuery(className: "OffYearUsers", predicate: predicate)
let scoreArray = try query.findObjects()
parseCode = scoreArray[0]["AccessCode"] as! String
} catch {
print("Error")
}
if verificationCode == parseCode {
defaults.setValue(parseCode, forKey: "accessCode")
performSegueWithIdentifier("verifyToMain", sender: nil)
defaults.setInteger(0, forKey: "ThankYou")
}
}
func keyboardWillShow(sender: NSNotification) {
if keyboardInt < 1 {
self.view.frame.origin.y -= 140
keyboardInt++
}
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y += 140
keyboardInt = 0
}
func dismissKeyboard() {
view.endEditing(true)
}
func deviceSize() {
if UIDevice().userInterfaceIdiom == .Phone {
switch UIScreen.mainScreen().nativeBounds.height {
case 960:
buttonToBottom.constant = 40
textfieldToSubmit.constant = 75
titleToBottom.constant = 340
case 1136:
buttonToBottom.constant = 100
textfieldToSubmit.constant = 90
titleToBottom.constant = 425
default:
print("unknown")
}
}
}
}
首先重置模拟器并切换键盘
没有键盘显示时,硬件键盘切换软件键盘对我有用
当硬件键盘连接到设备时,您看到的行为是正确的行为(具有 BT 键盘的真实设备和启用菜单项时在 sim 中)。您在 6s 而不是其他设备中看到此行为的原因可能是因为您的设置在该设备中与其他设备不同。按 cmd-k 切换屏幕键盘(类似于双击连接到真实设备的蓝牙键盘上的弹出按钮)。
模拟器上的奇怪行为。
视图控制器有一个文本字段。选择文本字段时,键盘会出现并且视图会向上移动,以便用户可以访问屏幕底部的按钮。在文本字段外按下,键盘消失,视图向下移动。很基本的东西。
最近,当我在iPhone 6s 模拟器上运行 应用程序时,选择文本框使视图向下移动,并且没有出现键盘。此外,在字段外按下会使视图进一步向下移动。它曾经工作正常。这是最近才开始的,我不记得进行过任何会导致问题的代码更改。
有趣的是,这只发生在 运行使用 6s 模拟器时。 4s、5、5s、6、6 Plus 和 6S Plus 都可以正常工作。此外,在实际的 6s 设备上 运行ning 时它工作正常。就是6s模拟器有点古怪
还有其他人遇到过类似的问题吗?知道如何解决这个问题吗?这是我的代码,以防万一。但如果这是一个编码问题,我会感到惊讶。谢谢!
import Foundation
import UIKit
import Parse
let defaults = NSUserDefaults.standardUserDefaults()
var verificationCode : String = String()
class VerificationEntry: UIViewController {
var keyboardInt = 0
@IBOutlet var buttonToBottom: NSLayoutConstraint!
@IBOutlet var textfieldToSubmit: NSLayoutConstraint!
@IBOutlet var titleToBottom: NSLayoutConstraint!
@IBOutlet var verify: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
defaults.setObject("Coding Explorer", forKey: "userNameKey")
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
self.deviceSize()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
let verInt = defaults.valueForKey("VerInt") as! Int
if verInt < 1 {
let alert = UIAlertController(title: "Thank You", message: "A verification code will be emailed to you, pending approval.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
defaults.setInteger(1, forKey: "VerInt")
}
}
@IBAction func submitVerification(sender: AnyObject) {
verificationCode = verify.text!
let userCode = defaults.stringForKey("userCode")
var parseCode : String = String()
do {
let predicate = NSPredicate(format:"UserNumber = %@", userCode!)
let query = PFQuery(className: "OffYearUsers", predicate: predicate)
let scoreArray = try query.findObjects()
parseCode = scoreArray[0]["AccessCode"] as! String
} catch {
print("Error")
}
if verificationCode == parseCode {
defaults.setValue(parseCode, forKey: "accessCode")
performSegueWithIdentifier("verifyToMain", sender: nil)
defaults.setInteger(0, forKey: "ThankYou")
}
}
func keyboardWillShow(sender: NSNotification) {
if keyboardInt < 1 {
self.view.frame.origin.y -= 140
keyboardInt++
}
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y += 140
keyboardInt = 0
}
func dismissKeyboard() {
view.endEditing(true)
}
func deviceSize() {
if UIDevice().userInterfaceIdiom == .Phone {
switch UIScreen.mainScreen().nativeBounds.height {
case 960:
buttonToBottom.constant = 40
textfieldToSubmit.constant = 75
titleToBottom.constant = 340
case 1136:
buttonToBottom.constant = 100
textfieldToSubmit.constant = 90
titleToBottom.constant = 425
default:
print("unknown")
}
}
}
}
首先重置模拟器并切换键盘 没有键盘显示时,硬件键盘切换软件键盘对我有用
当硬件键盘连接到设备时,您看到的行为是正确的行为(具有 BT 键盘的真实设备和启用菜单项时在 sim 中)。您在 6s 而不是其他设备中看到此行为的原因可能是因为您的设置在该设备中与其他设备不同。按 cmd-k 切换屏幕键盘(类似于双击连接到真实设备的蓝牙键盘上的弹出按钮)。