#ios #iphone #ipad #swift5
#iOS #iPhone #iPad #swift5
Вопрос:
Я хочу отобразить всплывающее окно с текстовым представлением, на iPad оно работает долгое время, но на iPhone всплывающее окно становится «полноэкранным», что мне не нужно и не хочу. Как мне сообщить iPhone, что (как и iPad) оно может иметь площадь 300 x 300? Я нашел несколько примеров, которые все отлично работают на iPad, но все они делают эту ерунду. что я делаю не так? (на реальных устройствах: iPhoneX, iPad2)
класс NewPopupVCTextView: UIViewController, UITextFieldDelegate {
@IBOutlet weak var infoTextTextView: UITextView!
override var preferredContentSize: CGSize {
get {
if infoTextTextView != nil,
let presentingVC = presentingViewController {
setTextViewContent()
return infoTextTextView.contentSize
}
return super.preferredContentSize
}
set { super.preferredContentSize = newValue }
}
func setTextViewContent() {
infoTextTextView.text = sourceText
}
}
Ответ №1:
В вашем исходном ViewController
//
// ViewController.swift
// popOver
//
// Created by Lieng Hongky on 8/26/20.
// Copyright © 2020 Hongky. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func openPopover(_ sender: Any) {
//MARK:====> instantiate the ViewController you want to be pop up
let popVC = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(identifier: "popVC")
popVC.modalPresentationStyle = .popover
//MARK:====> set the source view for the pop up VC
popVC.popoverPresentationController?.sourceView = self.view
popVC.popoverPresentationController?.sourceRect = CGRect(origin: self.view.center, size: CGSize.zero)
//MARK:====>if you want to omit the arrow add this line of code
popVC.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
popVC.popoverPresentationController?.delegate = self
self.present(popVC, animated: true) {
}
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
}
Комментарии:
1. Большое вам спасибо за ответ — но с вашим предложением я получил тот же результат на iPhone, что и раньше (моя старая версия работает точно так же на iPad) — так что в целом ничего не изменилось, тем не менее, большое спасибо
2. Могу ли я посмотреть вашу реализацию? в любом случае, вот мой пример, который работает нормально. вы можете клонировать проект и попробовать. github.com/lienghongky/ios_popover.git
3. во-первых, еще раз спасибо за ответ. Конечно, но это не маленькая программа, это довольно большое приложение. что я должен показать? Какие функции или вызовы (или классы, …) я должен показывать?
4. Я попробовал вашу ссылку (github.com/lienghongky/ios_popover.git ) — это пустой проект?! это была плохая шутка, не так ли?
5. Нет, это не шутка! оно не пустое