keyboard application crashed after button pressed

Viewed 22

I am trying to replace some strings which pickup from proxy, and I already run this code, give me no error. but actually it just doesn't work. I don't know where I am doing wrong. actually in simulator, the interface can be displayed, but when I click the button, caused crash.

OS Platform: Mac OS 12.5.1

Xcode version: Version 13.4.1

Swift Version: Swift 5

import UIKit
import Foundation
import AudioToolbox
import SwiftUI

  class KeyboardViewController: UIInputViewController {

    var Yuanyin:String!
    var bianyuanyin:String!
    var bufferletters:Substring!
    private var proxy: UITextDocumentProxy {
        return textDocumentProxy
    }

 @IBAction func keypressed(sender: UIButton) {

       // insert text
       let character = sender.titleLabel!.text!
       proxy.insertText(character)
       
       // check shiftStatus
       if shiftStatus == 1 {
        shiftbuttonpressed(self.ShiftButton)
        }
 
        // replace letters with tones

        let Str3 = proxy.documentContextBeforeInput
        let Last3Letter = Str3!.suffix(3)
        let Str2 = proxy.documentContextBeforeInput
        let Last2Letter = Str2!.suffix(2)
        let Str1 = proxy.documentContextBeforeInput
        let LastLetter = Str1!.suffix(1)
         if (LastLetter.range(of: "ɑ", options: .regularExpression) != nil)
        {
            deleteletters = 1
            replaceletters()
            bianyuanyin = "ɑ"
            bufferletters = LastLetter
        }
        
        //replace lastletter // uppercased

        if (Last2Letter.range(of: "UN", options: .regularExpression) != nil)
        {
            deleteletters = 2
            replaceletters()
            bianyuanyin = "U"
            bufferletters = Last2Letter
        }


 
 func replaceletters(){
           let Yuanyin = bianyuanyin
           let Bianxing1 = (Yuanyin ?? "") + "\u{0304}"
           let Bianxing2 = (Yuanyin ?? "") + "\u{0301}"
           let Bianxing3 = (Yuanyin ?? "") + "\u{030C}"
           let Bianxing4 = (Yuanyin ?? "") + "\u{0300}"
            Tone1Button.titleLabel?.text = bufferletters.replacingOccurrences(of: (Yuanyin ?? ""), with: Bianxing1)
            Tone2Button.titleLabel?.text = bufferletters.replacingOccurrences(of: (Yuanyin ?? ""), with: Bianxing2)
            Tone3Button.titleLabel?.text = bufferletters.replacingOccurrences(of: (Yuanyin ?? ""), with: Bianxing3)
            Tone4Button.titleLabel?.text = bufferletters.replacingOccurrences(of: (Yuanyin ?? ""), with: Bianxing4)
            Tone1Button.setTitle(Tone1Button.titleLabel?.text, for: UIControl.State.normal)
            Tone2Button.setTitle(Tone2Button.titleLabel?.text, for: UIControl.State.normal)
            Tone3Button.setTitle(Tone3Button.titleLabel?.text, for: UIControl.State.normal)
            Tone4Button.setTitle(Tone4Button.titleLabel?.text, for: UIControl.State.normal)
       }
}
0 Answers
Related