2017-11-13 10 views
1

UITextView 및 몇 개의 버튼이있는보기가 표시된 클래스를 작성했습니다. 버튼을 제외한 모든 기능은 탭에 응답하지 않습니다. 아래 클래스에 관련 코드가 있다고 생각합니다.iOS Swift Buttons가 응답하지 않음

class FullPrompt:UIViewController { 
    var canceledPressedCallback:(()->()?)?=nil 
    var okPressedCallback:((_ txt: String)->()?)? = nil 
    var popupView = UIView() 
    var field = UITextView() 
    var parentView = UIView() 

    func prompt(_ message:String,view: UIViewController,numberInput: Bool, callback: @escaping (_ txt: String)->()) { 
     prompt(message, view: view, numberInput: numberInput, callback: callback,cancelCallback: nil,defaultText: "") 
    } 

    func prompt(_ prompt:String,view: UIViewController,numberInput: Bool, callback: @escaping (_ txt: String)->(), cancelCallback: (()->())?,defaultText: String) { 
     canceledPressedCallback=cancelCallback 
     okPressedCallback=callback 

     let cancelButton=UIButton(frame: CGRect(x: 10, y: y, width: 70, height: 32)) 
     cancelButton.setTitle("Cancel", for: .normal) 
     cancelButton.addTarget(self, action: #selector(cancelButtonPressed(_:)), for: .touchUpInside) 
     popupView.addSubview(cancelButton) 
     let okButton=UIButton(frame: CGRect(x: 210, y: y, width: 70, height: 32)) 
     okButton.setTitle("Ok", for: .normal) 
     okButton.setTitleColor(UIColor.blue, for: .normal) 
     okButton.addTarget(self, action: #selector(okButtonPressed(_:)), for: .touchUpInside) 
     popupView.addSubview(okButton) 
     view.view.addSubview(popupView) 
    } 

    func cancelButtonPressed(_ sender: UIButton) { 
     popupView.removeFromSuperview() 
     if canceledPressedCallback != nil { 
      canceledPressedCallback!() 
     } 
    } 

    func okButtonPressed(_ sender: UIButton) { 
     popupView.removeFromSuperview() 
     okPressedCallback!(field.text) 
    } 
} 

내가 뭘 잘못하고 있니?

+0

보기에 유용한 프레임이 없습니다. – rmaddy

+0

이 VC를 인스턴스화하고 표시하는 방법을 잘 모르겠지만이 VC의 단추를 호출하는 VC의보기 계층 구조에 추가하는 것처럼 보입니다. 이 작업을 수행하는 경우 두 VC가 진행중인 작업을 알 수 있도록 특정 메소드를 호출해야합니다 (그렇지 않으면 예를 들어 터치가 인식되지 않을 수 있습니다). 자세한 내용은 [이 답변] (https://stackoverflow.com/a/28852897/3985749)을 참조하십시오. – pbasdf

답변

0

알아 냈습니다. 내 실수는 내 클래스 내에 뷰 속성 (popupView)을 추가하는 것이 었습니다. 내 클래스는 UIViewController의 하위 클래스 였기 때문에 하위 뷰를 클래스의 뷰 속성에 추가하고 다른 뷰를 만들지 않아야했습니다. 그래서, 기본적으로 popupView에 뭔가 추가하는 부분을 추가하면 어디서나 self.view로 바뀌 었습니다. 그들은 버튼이 잘 작동했습니다.