>

inputAccessoryView 모양의 이상한 버그가 발생했습니다. . 전환 도중에 다음과 같이 나타납니다.

전환 후 다음과 같이 나타납니다.

저는 속성을 무시합니다 :

   override var inputAccessoryView: UIView! {
    get {
        if composeView == nil {
            composeView = CommentComposeView(frame: CGRectMake(0, 0, 0, MinimumToolbarHeight - 0.5))
            self.setupSignals()
        }
        return composeView
    }
}

누군가가 내가하고있는 일에 명백한 결함을 지적하거나 전환 이전, 도중, 이후에 내 견해를 확인하는 방법에 대한 추가 정보를 제공 할 수 있는지 궁금합니다.

감사합니다!

수정

여기 내 CommentComposeView 입니다 :

import UIKit
class CommentComposeView: UIToolbar {
    var textView: SAMTextView!
    var sendButton: UIButton!
    private var didSetConstraints: Bool = false
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.initialize()
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.initialize()
    }
    private func initialize() {
        textView = SAMTextView(frame: CGRectZero)
        sendButton = UIButton.buttonWithType(.System) as UIButton
        self.barStyle = .Black
        self.translucent = true
        textView.backgroundColor = UIColor.presentOffWhite()
        textView.font = UIFont.presentLightMedium()
        textView.layer.borderWidth = 0.5
        textView.layer.cornerRadius = 5
        textView.placeholder = "Comment"
        textView.scrollsToTop = false
        textView.textContainerInset = UIEdgeInsetsMake(4, 3, 3, 3)
        textView.keyboardAppearance = .Dark
        textView.keyboardType = .Twitter
        self.addSubview(textView)
        sendButton = UIButton.buttonWithType(.System) as UIButton
        sendButton.enabled = false
        sendButton.titleLabel!.font = UIFont.presentBoldLarge()
        sendButton.setTitle("Send", forState: .Normal)
        sendButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        sendButton.setTitleColor(UIColor.presentCyan(), forState: .Highlighted)
        sendButton.setTitleColor(UIColor.presentLightGray(), forState: .Disabled)
        sendButton.contentEdgeInsets = UIEdgeInsetsMake(6, 6, 6, 6)
        self.addSubview(sendButton)
        RAC(self.sendButton, "enabled") <~ self.textView.rac_textSignal()
            .map { text in
                return (text as NSString).length > 0
        }
        textView.setTranslatesAutoresizingMaskIntoConstraints(false)
        sendButton.setTranslatesAutoresizingMaskIntoConstraints(false)
    }
    override func updateConstraints() {
        super.updateConstraints()
        if !didSetConstraints {
            // TODO: Replace raw constraints with a friendlier looking DSL
            self.addConstraint(
                NSLayoutConstraint(item: textView, attribute: .Left, relatedBy: .Equal, toItem: self, attribute: .Left, multiplier: 1, constant: 8)
            )
            self.addConstraint(
                NSLayoutConstraint(item: textView, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1, constant: 7.5)
            )
            self.addConstraint(
                NSLayoutConstraint(item: textView, attribute: .Right, relatedBy: .Equal, toItem: sendButton, attribute: .Left, multiplier: 1, constant: -2)
            )
            self.addConstraint(
                NSLayoutConstraint(item: textView, attribute: .Bottom, relatedBy: .Equal, toItem: self, attribute: .Bottom, multiplier: 1, constant: -8)
            )
            self.addConstraint(
                NSLayoutConstraint(item: sendButton, attribute: .Right, relatedBy: .Equal, toItem: self, attribute: .Right, multiplier: 1, constant: 0)
            )
            self.addConstraint(
                NSLayoutConstraint(item: sendButton, attribute: .Bottom, relatedBy: .Equal, toItem: self, attribute: .Bottom, multiplier: 1, constant: -4.5)
            )
        }
    }
}


  • 답변 # 1

    이것은 inputAccessoryView 자동 레이아웃의 iOS8 문제입니다. 문제는 UIToolbar의 clas _UIToolbarBackground 의 하위 뷰입니다.  초기 레이아웃 중에 제대로 배치되지 않았습니다. 다음 작업을 시도하십시오 :

    <올>

    와이즈 비즈 만들기  서브 클래 싱 CommentComposeView UIView 가 아닌 UIToolbar 인스턴스 추가  하위보기로.

    UIToolbar 내에서 자동 레이아웃 마스크 (실제 구속 조건 아님) 사용  

    CommentComposeView 재정의  당신의 -layoutSubviews 에서  이렇게 :

    CommentComposeView
    
    
    - (void)layoutSubviews { [super layoutSubviews]; contentToolbar.frame = self.bounds; sendButton.frame = CGRectMake(0.f, 0.f, 44.f, self.bounds.size.height); textView.frame = CGRectMake(44.f, 0.f, self.bounds.size.width - 44.f, self.bounds.size.height); }

  • 이전 java - bufferedimage 누수 - 대안이 있습니까?
  • 다음 java - 묵시적 객체 cc와 구성 요소의 JSF 차이점