我想在MFMailComposeViewController上关闭我的应用程序一段时间后的键盘,为此我在MFMailComposeViewController上添加了一个计时器和一个隐藏文本字段,一旦定时器触发我解雇键盘,这将成为苹果应用商店拒绝应用程序的问题吗?添加一个隐藏的UIITextField到MFMailComposeViewController
代码
import Foundation
import UIKit
import MessageUI
class mailViewController : UIViewController , MFMailComposeViewControllerDelegate, UITextFieldDelegate {
@IBOutlet var tempTextField : UITextField?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.lightGrayColor()
//var timer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: "dismissKeyBoard", userInfo: nil, repeats: false)
let mailComposeViewController = configuredMailComposeViewController()
if MFMailComposeViewController.canSendMail() {
tempTextField = UITextField(frame: CGRectMake(0, 0, 400, 400))
tempTextField!.delegate = self
tempTextField!.hidden = true
mailComposeViewController.view.addSubview(tempTextField!)
var timer = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: "goToHome", userInfo: nil, repeats: false)
self.presentViewController(mailComposeViewController, animated: true, completion: nil)
} else {
self.showSendMailErrorAlert()
}
let bounds = UIScreen.mainScreen().bounds
let width = bounds.size.width
let height = bounds.size.height
let rect = CGRect(x: 0, y: 0, width: width, height: height);
let testLayer = CustomView(frame: rect)
testLayer.backgroundColor = UIColor.clearColor()
//mailComposeViewController.view.addSubview(testLayer)
//UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
//UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
//[firstResponder resignFirstResponder];
var keyWindow = UIApplication.sharedApplication().keyWindow
//var firstResponder = keyWindow?.performSelector(firstResponder)
//firstResponder.re
}
@IBAction func sendEmailButtonTapped(sender: AnyObject) {
let mailComposeViewController = configuredMailComposeViewController()
if MFMailComposeViewController.canSendMail() {
self.presentViewController(mailComposeViewController, animated: true, completion: nil)
} else {
self.showSendMailErrorAlert()
}
}
func configuredMailComposeViewController() -> MFMailComposeViewController {
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property
mailComposerVC.setToRecipients(["[email protected]"])
mailComposerVC.setSubject("Sending you an in-app e-mail...")
mailComposerVC.setMessageBody("Sending e-mail in-app is not so bad!", isHTML: false)
return mailComposerVC
}
func showSendMailErrorAlert() {
let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail. Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK")
sendMailErrorAlert.show()
}
// MARK: MFMailComposeViewControllerDelegate Method
func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
controller.dismissViewControllerAnimated(true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("inside mail composer view")
}
func dismissKeyBoard(){
print("dismiss the keyboard now ....")
}
override func viewDidDisappear(animated: Bool) {
print("view did disappear got called !!!!")
}
func goToHome(){
print("timer ended")
//var goToHome = ViewController()
//self.presentViewController(goToHome, animated: true, completion: nil)
tempTextField?.becomeFirstResponder()
tempTextField?.resignFirstResponder()
}
}
如果用户登录....并且在mailComposeViewController上很长时间保持理想状态,他会自动超时?并被重定向到登录屏幕? – Max
在这种情况下,您可能需要为邮件功能找到备用方式。您可以通过自定义您的UI(如MFMailComposeViewController)来尝试使用WebServices。因为按照苹果的指导方针,它可能不允许这种方式.. !!! –