#swift #uitextview #interactive #inputaccessoryview #resignfirstresponder
#swift #uitextview #интерактивный #inputaccessoryview #resignfirstresponder
Вопрос:
Я реализовал inputAccessoryView с помощью UITextView. Я также установил CollectionView.keyboardDismissMode = .interactive Когда я отключаю клавиатуру с помощью интерактивного режима, у меня возникают две ошибки
1) — Предупреждение первого ответчика: ‘<.InputTextView: 0x7f8f54061800; BaseClass = UITextView; frame = (8 8; 307 35.5); text = «; clipsToBounds = YES; gestureRecognizers = ; layer = ; contentOffset: {0, 0}; contentSize: {130, 0}; Скорректированный набор содержимого:{0, 0, 0, 0}>’ отклоненный resignFirstResponder при удалении из иерархии
2) — [UIWindow endDisablingInterfaceAutorotationAnimated:] вызывается> без сопоставления -beginDisablingInterfaceAutorotation. Игнорирование.
Xcode 10 и swift 4
Код для CollectionViewController
lazy var containerView: InputAccesoryView = {
let frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)
let containerView = InputAccesoryView(frame: frame)
containerView.backgroundColor = UIColor.groupTableViewBackground
containerView.autoresizingMask = .flexibleHeight
containerView.delegate = self
return containerView
}()
override var inputAccessoryView: UIView {
get {
return containerView
}
}
override var canBecomeFirstResponder: Bool {
return true
}
Код для InputAccesoryView
public let inputTextView: InputTextView = {
let textView = InputTextView()
textView.font = UIFont.systemFont(ofSize: 16)
textView.isScrollEnabled = false
textView.textAlignment = .left
textView.layer.cornerRadius = 10
return textView
}()
private lazy var sendButton: UIButton = {
let button = UIButton(type: .system)
button.setImage(UIImage(named: "send2"), for: .normal)
button.tintColor = .black
button.addTarget(self, action: #selector(handleUploadComment), for: .touchUpInside)
return button
}()
override init(frame: CGRect) {
super.init(frame: frame)
configureViewComponents()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override var intrinsicContentSize: CGSize {
return CGSize.zero
}
private func configureViewComponents(){
addSubview(sendButton)
sendButton.setPosition(top: nil, left: nil, bottom: nil, right: rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 8, width: 44, height: 0)
sendButton.centerYAnchor.constraint(equalTo: layoutMarginsGuide.centerYAnchor).isActive = true
addSubview(inputTextView)
inputTextView.setPosition(top: topAnchor, left: leftAnchor, bottom: layoutMarginsGuide.bottomAnchor, right: sendButton.leftAnchor, paddingTop: 8, paddingLeft: 8, paddingBottom: 8, paddingRight: 8, width: 0, height: 0)
let separatorView = UIView()
separatorView.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1)
addSubview(separatorView)
separatorView.setPosition(top: topAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0.5)
}
func clearCommentTextView() {
inputTextView.text = nil
inputTextView.placeHolder.isHidden = false
}
Комментарии:
1. У меня такая же проблема, вам удалось решить эту проблему?
2. К сожалению, нет ((
3. это сбой только на iPhone X?
4. если это так, то это потому, что вы используете
layoutMarginsGuide.bottomAnchor
, и вы должны использоватьsafeAreaLayoutGuide
вместо этого.5. Нет, это не только iPhone X, и, конечно, я использую safeAreaLayoutGuide