Я сталкиваюсь с очень странными проблемами, которые, похоже, не могут понять, как работать. Когда я отлаживаю приложение на своем устройстве или на симуляторе, я не получаю никаких ошибок. Когда я создаю его для развертывания ad-hoc, приложение выдает исключение и терпит неудачу. Ошибка, которую я получаю в журнале:Ограничение автоопределения вызывает исключение в производстве
[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:]
Мой макет выглядит так по всем моим взглядам.
Моих ограничений растягивать виды на всю ширину экрана, и я создаю динамическое ограничение ширины на взглядах в моем BaseViewController, который получает в наследстве от всех остальных. Я создал своих делегатов для scrollView и contentView для каждого из моих подпрограмм.
class BaseViewController: UIViewController, UITextFieldDelegate {
var activeField:UITextField?
@IBOutlet weak var scrollView: UIScrollView?
@IBOutlet weak var contentView: UIView?
override func viewDidLoad() {
if(self.scrollView != nil)
{
// Do any additional setup after loading the view.
let leftConstraint:NSLayoutConstraint = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Left, multiplier: 1.0, constant: 0)
self.view.addConstraint(leftConstraint)
let rightConstraint:NSLayoutConstraint = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: 0)
self.view.addConstraint(rightConstraint)
}
super.viewDidLoad()
}
Я более чем счастлив предоставить любую дополнительную информацию, пожалуйста, просто спросите, и я дам вам все, что смогу.
EDIT
Это происходит только на архивацию и работает без подключения к отладчику. Если я отлаживаю выпуск, не проблема.
import UIKit
class BaseViewController: UIViewController, UITextFieldDelegate {
var activeField:UITextField?
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true);
}
func textFieldShouldReturn(field: UITextField) -> Bool
{
field.resignFirstResponder()
return true
}
func textFieldDidBeginEditing(sender: UITextField)
{
self.activeField = sender
}
func textFieldDidEndEditing(sender: UITextField)
{
self.activeField = nil
}
func keyboardDidShow(notification: NSNotification)
{
if(self.activeField != nil && self.scrollView != nil) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
self.scrollView!.contentInset = contentInsets
self.scrollView!.scrollIndicatorInsets = contentInsets
var aRect = self.view.frame
aRect.size.height -= keyboardSize.size.height
if(!CGRectContainsPoint(aRect, self.activeField!.frame.origin)) {
self.scrollView!.scrollRectToVisible(self.activeField!.frame, animated: true)
}
}
}
}
func keyboardWillBeHidden(notification: NSNotification)
{
if(self.scrollView != nil) {
let contentInsets:UIEdgeInsets = UIEdgeInsetsZero
self.scrollView!.contentInset = contentInsets
self.scrollView!.scrollIndicatorInsets = contentInsets
}
}
}
Мои журналы выглядят так, и я не уверен, в чем проблема.
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_c.dylib 0x0000000193c19690 __sfvwrite + 0
1 libsystem_c.dylib 0x0000000193c20958 __vfprintf + 11352
2 libsystem_c.dylib 0x0000000193c3b67c __v2printf + 584
3 libsystem_c.dylib 0x0000000193bce208 _vsnprintf + 300
4 libsystem_c.dylib 0x0000000193bcec54 snprintf_l + 20
5 CoreFoundation 0x0000000181cc7018 __CFStringAppendFormatCore + 11580
6 CoreFoundation 0x0000000181cc42a0 _CFStringCreateWithFormatAndArgumentsAux2 + 244
7 Foundation 0x0000000182b0a444 -[NSPlaceholderString initWithFormat:locale:arguments:] + 168
8 Foundation 0x0000000182b0a304 +[NSString stringWithFormat:] + 72
9 yazda-ios 0x00000001000fcea0 +[NRMAThreadLocalStore currentThreadDictionary] (NRMAThreadLocalStore.m:238)
10 yazda-ios 0x00000001000fb678 +[NRMAThreadLocalStore threadLocalTrace] (NRMAThreadLocalStore.m:36)
11 yazda-ios 0x00000001000fc040 +[NRMAThreadLocalStore prepareSameThread:child:withParent:] (NRMAThreadLocalStore.m:126)
12 yazda-ios 0x00000001000fbac0 +[NRMAThreadLocalStore pushChild:forParent:] (NRMAThreadLocalStore.m:91)
13 yazda-ios 0x00000001000c92d4 +[NRMATraceController newTraceSetup:parentTrace:] (NRMATraceController.m:310)
14 yazda-ios 0x00000001000c97d8 +[NRMATraceController enterMethod:fromObject:parentTrace:traceCategory:withTimer:] (NRMATraceController.m:374)
15 yazda-ios 0x00000001000c95ac +[NRMATraceController enterMethod:fromObject:parentTrace:traceCategory:] (NRMATraceController.m:338)
16 yazda-ios 0x00000001000b4498 NRMA__beginMethod (NRMAMethodProfiler.m:1051)
17 yazda-ios 0x00000001000b406c NRMA__voidParamHandler (NRMAMethodProfiler.m:705)
18 yazda-ios 0x0000000100047f38 yazda_ios.BaseViewController.viewDidLoad (yazda_ios.BaseViewController)() ->() (BaseViewController.swift:32)
19 yazda-ios 0x00000001000b407c NRMA__voidParamHandler (NRMAMethodProfiler.m:707)
20 yazda-ios 0x0000000100047f38 yazda_ios.BaseViewController.viewDidLoad (yazda_ios.BaseViewController)() ->() (BaseViewController.swift:32)
взглядов, которые вы добавляете ограничения программно, вы задали translatesAutoresizingMaskToConstraints к NO? – Cocoadelica
Я сейчас нет. Должен ли я установить это на родительском представлении, в виде прокрутки или в моем представлении содержимого? – jstoup111
ContentView Я думаю – Cocoadelica