如何遍历MFMessageViewController的视图层次结构?

How to traverse through the view hierarchy of MFMessageViewController?

提问人:user16780334 提问时间:6/29/2021 最后编辑:user16780334 更新时间:6/30/2021 访问量:188

问:

我想遍历MFMessageComposerController的视图层次结构,以便可以获取填充消息的UITextField实例。这是我在 Swift 中为呈现 MFMessageController 所做的代码。如何遍历其层次结构?

代码:

@IBAction func sendSmsClick(_ sender: AnyObject) {
        guard MFMessageComposeViewController.canSendText() else {
        return
    }

    let messageVC = MFMessageComposeViewController()
    messageVC.view.endEditing(true)
    messageVC.body = "Enter a message";
    messageVC.recipients = ["Enter tel-nr"]
    messageVC.messageComposeDelegate = self;
    NSLog("Subviews %@", messageVC.view.subviews);
   // self.view.endEditing(true)

self.present(messageVC, animated: false) {
   
}
}

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    switch (result.rawValue) {
        case MessageComposeResult.cancelled.rawValue:
        print("Message was cancelled")
        self.dismiss(animated: true, completion: nil)
    case MessageComposeResult.failed.rawValue:
        print("Message failed")
        self.dismiss(animated: true, completion: nil)
    case MessageComposeResult.sent.rawValue:
        print("Message was sent")
        self.dismiss(animated: true, completion: nil)
    default:
        break;
    }
}

谁能告诉如何遍历MFMessageViewController的视图层次结构?

NSLOG 的结果

enter image description here

我的议程是模仿这个应用程序中显示的内容。查找文本字段并禁用编辑 .来自Appstore的应用程序:

iOS Swift iPhone Xcode UIVieviceController

评论

0赞 Larme 6/29/2021
NSLog("Subviews %@", messageVC.view.subviews);它至少有效吗?任何输出?我可能会打电话强制加载。此外,XCode 的 Debug View Hierarchy 也可能有所帮助。但是,由于它是私人的,我不会建议这样做。loadView
0赞 user16780334 6/29/2021
@larme我已经用从 NSLog 获得的输出更新了问题。是的,我的主要议程是禁用我在 App Store 应用程序之一中找到的 MFMessageComposer 的编辑。附上了那个的gif
0赞 Larme 6/29/2021
好吧,你需要再次迭代他的子视图......我猜有很多视图和子视图......但同样,您在应用程序上看到了它,但它也可能因此而被拒绝。
0赞 user16780334 6/29/2021
@Larme是的,该行为存在于多个应用程序上。你能帮我如何遍历MFMessageComposer的视图吗?
0赞 Larme 6/29/2021
你做到了吗?好吧,你有一个 ,也打电话给他们,等等。您可以使用 for 循环、while、循环等。NSLog("Subviews %@", messageVC.view.subviews);NSArrayUIViewsubview

答: 暂无答案