Когда мы пытаемся отключить UITextView's
редактируемую опцию или UserInteraction, клавиатура автоматически скрывается.
Вместо этого
messageTextView.isEditable = false
Путь 2:
Вы можете создать UIView
и добавить SubSubView в UIWindow
, что будетне скрыть клавиатуру, а также пользователь не может печатать.
var overView : UIView? // GLOBAL DECLARATION
func addOverView() { // CALL THIS WHEN SEND BUTTON CLICKED
let window = UIApplication.shared.keyWindow!
overView = UIView(frame: window.bounds)
overView?.backgroundColor = UIColor.red.withAlphaComponent(0.4)
let windowCount = UIApplication.shared.windows.count
UIApplication.shared.windows[windowCount-1].addSubview(overView!)
}
func removeOverView() { // CALL THIS WHEN RESPONSE RECEIVED
overView?.removeFromSuperview()
}
Способ вывода 2:
Путь 1:
Использование UTextView Delegate
,
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if isSendBtnClicked == true {
return false
}
return true
}
@IBAction func sendButtonClicked(_ sender: UIButton) {
// Disable textview and send button while message is being sent
self.isSendBtnClicked = true
sendButton.isEnabled = false
fetchSendMessage( ) { (result, error) in
if error != nil {
ShowDialog.showDialog(title: nil, message: (error?.localizedDescription)!, viewController: self)
} else {
if (result?.success)! {
self.arry = (result?.data)!
self.fetchMessages(page: 1, completed: {
self.insertNewMessage(sentMessage)
})
// Clear the message & Enable textview and send button
self.isSendBtnClicked = false
self.messageTextView.text = "Type Message"
self.messageTextView.textColor = UIColor.greyColour
self.sendButton.isEnabled = true
self.messageTextView.endEditing(true)
} else {
ShowDialog.showDialog(title: "Message not sent", message: (result?.errors![0].message)!, viewController: self)
// Retain typed message
// Enable textview and send button
self.isSendBtnClicked = false
self.sendButton.isEnabled = true
}
}
}
}
После того, как пользователь нажмет кнопку «Отправить», клавиатура не будет скрыта, и пользователь сможет ввести, но не будет вводитьtextview до ответа от fetchSendMessage()