質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

解決済

swift 計算エラー

hirotoshin
hirotoshin

総合スコア24

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

2回答

0リアクション

0クリップ

1717閲覧

投稿2016/10/14 07:39

編集2016/10/14 08:11

質問失礼します。
テキストビューをキーボードの上にずらすというプログラムを書いたのですが、let txtLimit = txtActiveView.frame.origin.y + txtActiveView.frame.height + 8.0の場所でEXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0)というエラーが出てしまいます。
計算のミスだということはわかるのですが、どうしたらよいかよくわかりません。
テキストフィールドのときはうまく行ったのですが、テキストビューにした途端このエラーが吐かれました。
教えていただけたら幸いです。
よろしくお願いします。

swift

import UIKit class ViewController: UIViewController, UITextViewDelegate { @IBOutlet weak var scroll: UIScrollView! @IBOutlet weak var text1: UITextField! @IBOutlet weak var text2: UITextField! @IBOutlet weak var text3: UITextView! @IBOutlet weak var text4: UITextView! var txtActiveView: UITextView!//編集後のtextFieldを新しく格納する変数を定義 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. text3.delegate = self text4.delegate = self//デリゲート設定(このdelegateは画面もしくはreturnをタップした時にキーボードを閉じる処理を扱うのに必要なもので、NSNotificationCenterを使うために必要としているものではない。) // Do any additional setup after loading the view, typically from a nib. } // Viewが画面に表示される度に呼ばれるメソッド override func viewWillAppear(animated: Bool) { // NSNotificationCenterへの登録処理 let notificationCenter = NSNotificationCenter.defaultCenter() notificationCenter.addObserver(self, selector: "handleKeyboardWillShowNotification:", name: UIKeyboardWillShowNotification, object: nil) notificationCenter.addObserver(self, selector: "handleKeyboardWillHideNotification:", name: UIKeyboardWillHideNotification, object: nil) } // Viewが非表示になるたびに呼び出されるメソッド override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) // NSNotificationCenterの解除処理 let notificationCenter = NSNotificationCenter.defaultCenter() notificationCenter.removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) notificationCenter.removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) } //画面がタップされた際にキーボードを閉じる処理 func tapGesture(sender: UITapGestureRecognizer) { text3.resignFirstResponder() text4.resignFirstResponder() } //キーボードのreturnが押された際にキーボードを閉じる処理 func textFieldShouldReturn(textView: UITextView) -> Bool { text3.resignFirstResponder() text4.resignFirstResponder() // itemMemo.resignFirstResponder() return true } //textFieldを編集する際に行われる処理 func textFieldShouldBeginEditing(textView: UITextView) -> Bool { txtActiveView = textView // 編集しているtextFieldを新しいtextField型の変数に代入する return true } //キーボードが表示された時 func handleKeyboardWillShowNotification(notification: NSNotification) { //郵便入れみたいなもの let userInfo = notification.userInfo! //キーボードの大きさを取得 let keyboardRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue() // 画面のサイズを取得 let myBoundSize: CGSize = UIScreen.mainScreen().bounds.size // ViewControllerを基準にtextFieldの下辺までの距離を取得 let txtLimit = txtActiveView.frame.origin.y + txtActiveView.frame.height + 8.0 // ViewControllerの高さからキーボードの高さを引いた差分を取得 let kbdLimit = myBoundSize.height - keyboardRect.size.height // こうすることで高さを確認できる(なくてもいい) print("テキストフィールドの下辺:(\(txtLimit))") print("キーボードの上辺:(\(kbdLimit))") //スクロールビューの移動距離設定 if txtLimit >= kbdLimit { scroll.contentOffset.y = txtLimit - kbdLimit } } //ずらした分を戻す処理 func handleKeyboardWillHideNotification(notification: NSNotification) { scroll.contentOffset.y = 0 } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2016/10/14 07:45依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「過去の低評価」という指摘を受けました。

fuzzball

2016/10/14 07:44

どういうエラーが出るのでしょうか?

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。