2017-09-01 23 views
0

UIViewControllerがあり、その中に別のUIViewがあります。このビューにはいくつかのテキストフィールドがあります。ユーザーがいずれかのフィールドをタップすると、そのビューは自動的に彼のcenter.yに収まります。最後に、ユーザがタップしたテキストフィールドが画面の中央に表示されます。しかし、私の場合、その見方は動かない。シミュレータではうまくいきましたが、実際の電話では何も起こりません。出力center.yの位置のみが変更されます。私は制約付きでUIViewを修正しました。iOS-center.yが表示されない

ここに、タップアクションのコードがあります。

func textFieldDidBeginEditing(_ textField: UITextField) { 
    textField.layer.borderWidth = 0 
    textField.clearsOnBeginEditing = true 
    textField.text = "" 
    print("Began") 
    let textFieldCoInView = textField.center 
    let coInSelf = self.dataView.convert(textFieldCoInView, to: self.view) 
    print(coInSelf) 
    print(self.view.center.y) 
    if(coInSelf.y > self.view.center.y) { 
     dataViewOriginY = dataView.center.y 
     print("Works") 
     self.dataView.center.y = self.dataView.center.y - (coInSelf.y - self.view.center.y) 
     print(self.dataView.center.y) 
    } 
} 
+0

表示するために提供した制約はありますか? –

答えて

0

"私は制約とのUIViewを修正しました。"

移動しようとしているビューに制約がある場合は、おそらくautolayoutがあなたと戦っています。その理論をテストして、移動しているビューの制約を解除してみてください。

これがあれば、制約に合わせてアウトレットを作成し、コード内の値を変更する(または制約を使用しない)必要があるでしょう。

いずれにしても、あなたはオートレイアウトがあなたと戦っていることがわかり、その制約が属すると言うビューを保持していると思います。

0

UIViewに設定した制約を確認してください。コンソールにエラーがないかチェックしてください。制約により、コードがビューを変更するのを止めることができます。おそらく制約をオフにして、コードが機能するかどうかを確認してください。

関連する問題