9

View Controllerにデリゲートが設定されたUITextViewがあります

デリゲート メソッド、サブクラス化、セレクターなどを介して、カーソルが移動したときにそれを見つける方法を理解するのに役立ちます。

私は試してみましたが-textViewDidChange-textViewDidChangeSelection他のすべてのデリゲートメソッドの中でも、カーソルがテキストビュー内で移動されたときに呼び出されません...

では、キャレットがいつ移動されたのかをどのように発見し、UITextView必要に応じて行動することができますか (いくつかのコードを実行します)

これは非現実的な質問のように思えるかもしれませんが、カーソルが上下に移動したときにラベルを更新する必要があるシナリオがあるので、図にしたいと思います

ありがとうございます。

4

2 に答える 2

16

@rmaddyのコメントを拡張するだけです。UITextViewDelegateメソッド-textViewDidChangeSelection:を使用して、テキスト ビューで選択された範囲が変更されたときに通知されるようにします。そこから、テキスト ビューのプロパティを介してテキストの選択を表すNSRangeにアクセスできます。selectedRange

- (void)textViewDidChangeSelection:(UITextView *)textView
{
    NSRange range = textView.selectedRange;
}
于 2013-08-31T23:26:20.387 に答える
0

スウィフト 4.2

func textViewDidChangeSelection(_ textView: UITextView) {
    DispatchQueue.main.async {
        self.othersTextView.selectedRange = NSRange(location: 0,length: 0)
    }
}

カーソルを常に UITextView の先頭に設定する

于 2021-11-25T12:52:21.537 に答える