Okay, ich habe eine Menge Dokumentation über die Funktionsweise des UIAlertController nachgeschlagen und ich habe ein ziemlich einzigartiges Szenario. Meine Anwendung wurde entwickelt, um mit einem HID Bluetooth-Scanner zu arbeiten. Wenn ich Folgendes verwende:Swift UIAlertController deaktivieren Return-Taste ohne UITextField
preferredStyle: UIAlertControllerStyle.Alert
Nachdem ich eine Warnung generiert habe, dass der Artikel, den ich gescannt habe, falsch ist. Cool, Alert tritt auf, Problem ist, wenn ich erneut scanne (was Tastatureingaben emuliert), der Return-Schlüssel wird an den Alarm gesendet und der Alarm führt die Abweisung aus.
Wenn ich benutze:
preferredStyle: UIAlertControllerStyle.ActionSheet
Dann wird der Alarm zu bleiben, wo sollte es Scans und ignorieren, während das Alarmfenster gerade liegt, wie ich es will.
Also meine Frage ist, wie kann ich den Return-Schlüssel erfassen und verhindern, dass der Alarm die Kündigung Aktion aufrufen? Ich bin ein bisschen neu mit swift und ich habe das Gefühl, die Antwort ist einfach, aber ich habe ein halbes Dutzend Dinge ausprobiert, die einfach nicht funktionieren.
Wenn es eine Einstellung gibt, um alle Benutzereingaben in das Warnfenster oder irgendeine Lösung zu verhindern, bin ich für jede Methode. Ich benutze das ActionSheet lieber nicht und verwende lieber die iOS-Warnungen, anstatt einen eigenen Bildschirm zu erstellen. Wenn das nicht möglich ist, kann ich mir sicher ein eigenes 'Alerts' Fenster erstellen.
Code, den ich von einer einfachen Alerts-Klasse anrufe, die ich gemacht habe.
import UIKit
class Alerts {
var controller: UIViewController
var message: String
var title: String
init?(title: String, message: String, controller: UIViewController){
if title.isEmpty || message.isEmpty {
return nil
}
self.title = title
self.message = message
self.controller = controller
}
func save_alert(input_field:UITextField, callable: (Bool)->Void){
let action = UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default) {
UIAlertAction in
callable(false)
input_field.enabled = true
input_field.becomeFirstResponder()
print("DISMISS CALLED")
}
let alert = UIAlertController(title: self.title,message:self.message,preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(action)
self.controller.presentViewController(alert,animated:true, completion: nil)
}
}