カーソルが入っているという事はキーボードが表示されているということですかね?
それでしたらキーボードが表示される通知を登録して表示された合図でイベントを実行するのはいかがでしょうか?
どのキーボードかは現在のFirstResponderを取得していますのでそこでtag
なりで分けると良いと思います。
気になるのはアクションメソッドで、どのように定義しているのか載せていただけると他のアドバイスをできるかもしれません。
※ ちなみにSwift2で書いているので適時置き換えてください。
swift
1import UIKit
2
3class ViewController: UIViewController {
4
5
6 @IBOutlet weak var textField: UITextField!
7
8
9 override func viewDidLoad() {
10 super.viewDidLoad()
11
12 // キーボードが表示された時の通知を登録
13 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardDidShowNotification(_:)), name: UIKeyboardDidShowNotification, object: nil)
14 }
15
16 deinit {
17 // 通知を解除
18 NSNotificationCenter.defaultCenter().removeObserver(self)
19 }
20
21 func keyboardDidShowNotification(notification: NSNotification) {
22
23 print("Keyboardが表示されたよ!")
24
25 if let textField = UIResponder.currentFirstResponder() as? UITextField {
26 // TextFieldを取得
27 print(textField.text)
28 }
29 }
30}
31
32// Firstrespoonderを返すextension
33extension UIResponder {
34
35 private weak static var _currentFirstResponder: UIResponder? = nil
36
37 public class func currentFirstResponder() -> UIResponder? {
38 UIResponder._currentFirstResponder = nil
39 UIApplication.sharedApplication().sendAction(#selector(UIResponder.findFirstResponder(_:)), to: nil, from: nil, forEvent: nil)
40 return UIResponder._currentFirstResponder
41 }
42
43 internal func findFirstResponder(sender: AnyObject) {
44 UIResponder._currentFirstResponder = self
45 }
46}
Eventの取得タイプを変更
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/08 00:58 編集
2016/09/08 21:51