使用MFMessageComposeViewController,MFMailComposeViewController后,约束(?)发生了变化

时间:2015-10-12 08:59:41

标签: swift constraints

我在UISplitViewcontroller中有一个标签为“备注”的详细视图。

它的高度约束设置为< = 63,它的底部空间设置为它下面的UITableView

enter image description here

备注将填充文字,我想将其约束为最多3行(身高= 21)

这非常有效:

enter image description here

当电话号码是手机时,不仅会显示手机,还会显示发送短信的按钮。然而,在显示MFMessageComposeViewController(MFMailComposeViewController用于电子邮件地址后也是如此)之后,Remark标签突然显示4行:

enter image description here

为了完整起见,没有太多代码要显示:

显示:

  @objc func sendEmail (sender : AnyObject) {

    let button = sender as! ActionButton
    let viewController = button.viewController


    var picker = MFMailComposeViewController()
    picker.mailComposeDelegate = viewController
    picker.setToRecipients([self.address!])

    viewController!.presentViewController(picker, animated: true, completion: nil)


}

并解雇

func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
        dismissViewControllerAnimated(true, completion: nil)
    }

我没有在故事板视图上更改任何内容(不添加字段或添加/删除/更改约束)

任何人都知道如何发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我碰到了非常相似的东西。我有一个直接位于UITableView下的UIView,它包含一个发送电子邮件的按钮。如果我单击按钮,然后使用MFMailComposeViewController弹出撰写电子邮件视图,那么当对话框被取消时,就好像ViewController的视图已将其高度增加了50个像素。我有一个约束,让我的UIView保持在最底层。我必须创建一个Bool来跟踪我从电子邮件视图返回的时间,并将约束更改为50像素。这是我在viewWillAppear中的代码,其中returnFromEmail是我在呈现MFMailComposeViewController后设置为true的Bool:

bottomViewBottomConstraint.constant = returnFromEmail ? 50 : 0
returnFromEmail = false