Hide emojisButton and increase width of messageText when user is writing in MessageView

This commit is contained in:
benoit.martins 2023-06-14 22:00:24 +02:00
parent 3d99102426
commit 70d92254f8
2 changed files with 16 additions and 13 deletions

View file

@ -34,7 +34,7 @@ class MessageView: UIView, UITextViewDelegate {
let sendButton = CallControlButton(buttonTheme:VoipTheme.nav_button(""))
let emojisButton = CallControlButton(buttonTheme:VoipTheme.nav_button("emoji"))
let messageTextView = UIView()
let messageWithEmojiView = UIView()
let messageWithEmojiView = UIStackView()
let messageText = UITextView()
let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png"))
var fileContext = false
@ -86,12 +86,12 @@ class MessageView: UIView, UITextViewDelegate {
messageWithEmojiView.matchParentDimmensions(insetedByDx: 10).done()
messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get()
messageWithEmojiView.addSubview(messageText)
messageWithEmojiView.addArrangedSubview(messageText)
messageText.matchParentHeight().alignParentLeft().alignParentRight(withMargin: 40).done()
messageText.font = UIFont.systemFont(ofSize: 18)
messageText.delegate = self
messageWithEmojiView.addSubview(emojisButton)
messageWithEmojiView.addArrangedSubview(emojisButton)
emojisButton.alignParentRight().matchParentHeight().done()
UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in
@ -105,8 +105,7 @@ class MessageView: UIView, UITextViewDelegate {
if ((messageText.text.isEmpty && !fileContext) || isLoading) {
sendButton.isEnabled = false
emojisButton.isHidden = false
messageText.setWidth(80)
NotificationCenter.default.post(name: Notification.Name("LinphoneTextViewSize"), object: self)
NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self)
lastNumLines = 0
} else {
if (messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.first?.properties.isEmojiPresentation == true){
@ -118,14 +117,11 @@ class MessageView: UIView, UITextViewDelegate {
}
if onlyEmojis {
emojisButton.isHidden = false
messageText.setWidth(100)
} else {
emojisButton.isHidden = true
messageText.setWidth(80)
}
} else {
emojisButton.isHidden = true
messageText.setWidth(80)
emojisButton.isHidden = true
}
if !isComposing {
chatRoom.compose()
@ -147,17 +143,17 @@ class MessageView: UIView, UITextViewDelegate {
}
extension UIView {
func setWidth(_ h:CGFloat, animateTime:TimeInterval?=nil) {
func setWidth(_ w:CGFloat, animateTime:TimeInterval?=nil) {
if let c = self.constraints.first(where: { $0.firstAttribute == .width && $0.relation == .equal }) {
c.constant = CGFloat(h)
c.constant = CGFloat(w)
if let animateTime = animateTime {
UIView.animate(withDuration: animateTime, animations:{
self.superview?.layoutIfNeeded()
self.layoutIfNeeded()
})
}
else {
self.superview?.layoutIfNeeded()
self.layoutIfNeeded()
}
}
}

View file

@ -277,6 +277,7 @@ class BackActionsNavigationView: UIViewController {
NotificationCenter.default.addObserver(self, selector: #selector(self.rotated), name: UIDevice.orientationDidChangeNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.changeSizeOfTextView), name: Notification.Name("LinphoneTextViewSize"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.resetSizeOfTextView), name: Notification.Name("LinphoneResetTextViewSize"), object: nil)
}
func resetRecordingProgressBar(){
@ -400,12 +401,18 @@ class BackActionsNavigationView: UIViewController {
@objc func changeSizeOfTextView(){
let numLines = (messageView.messageText.contentSize.height / messageView.messageText.font!.lineHeight)
print("changeSizeOfTextViewchangeSizeOfTextView \(numLines)")
if numLines >= 3 && numLines <= 6 {
messageView.setHeight(33*numLines - 33, animateTime: 0.1)
} else if numLines < 3 {
messageView.setHeight(66, animateTime: 0.1)
}
}
@objc func resetSizeOfTextView(){
messageView.setHeight(66, animateTime: 0.1)
}
}
extension UIView {