Files
GLEGram-iOS/submodules/Display/Source/EditableTextNode.swift
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

68 lines
2.1 KiB
Swift

import Foundation
import UIKit
import AsyncDisplayKit
open class EditableTextNode: ASEditableTextNode {
override public var keyboardAppearance: UIKeyboardAppearance {
get {
return super.keyboardAppearance
}
set {
guard newValue != self.keyboardAppearance else {
return
}
super.keyboardAppearance = newValue
self.textView.reloadInputViews()
}
}
public var isRTL: Bool {
if let text = self.textView.text, !text.isEmpty {
let tagger = NSLinguisticTagger(tagSchemes: [.language], options: 0)
tagger.string = text
let lang = tagger.tag(at: 0, scheme: .language, tokenRange: nil, sentenceRange: nil)
if let lang = lang?.rawValue, lang.contains("he") || lang.contains("ar") || lang.contains("fa") {
return true
} else {
return false
}
} else {
return false
}
}
}
public extension UITextView {
var numberOfLines: Int {
let layoutManager = self.layoutManager
let numberOfGlyphs = layoutManager.numberOfGlyphs
var lineRange: NSRange = NSMakeRange(0, 1)
var index = 0
var numberOfLines = 0
while index < numberOfGlyphs {
layoutManager.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
index = NSMaxRange(lineRange)
numberOfLines += 1
}
return numberOfLines
}
var isRTL: Bool {
if let text = self.text, !text.isEmpty {
let tagger = NSLinguisticTagger(tagSchemes: [.language], options: 0)
tagger.string = text
let lang = tagger.tag(at: 0, scheme: .language, tokenRange: nil, sentenceRange: nil)
if let lang = lang?.rawValue, lang.contains("he") || lang.contains("ar") || lang.contains("fa") {
return true
} else {
return false
}
} else {
return false
}
}
}