2017-08-03 75 views

回答

1

添加selectedTextRange財產觀察員viewDidAppear,

[self.txtfield addObserver:self forKeyPath:@"selectedTextRange" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil]; 

那麼這個屬性添加功能,

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if([keyPath isEqualToString:@"selectedTextRange"] && self.txtfield == object) 
     NSLog(@"cursor moved"); 
} 

當你移動光標,而無需輸入應該打印任何文本「光標移到」。

0

selectedTextRange財產UITextField通過從UITextInput協議。因此,您可以使用KVO訂閱此屬性的更改,也可以使用重寫的方法setSelectedTextRange實施您自己的子類。

0

我相信也肯定是的UITextField的用於光標移動的任何本地代表,但你也可以繼承的UITextField,並且可以覆蓋方法

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
if let selectedRange = textField.selectedTextRange { 

    let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start) 

    print("\(cursorPosition)") 
} 

}

,每當光標移動,那麼它應該是可以檢查獲取光標位置。