2013-02-05 81 views
0

需要您的幫助一點。 我做了一個自定義的鍵盤,並將其添加到我的UITextFields.inputView。一切運作良好。但是我遇到了一些問題,使得左右移動光標的按鈕。其實,我做了他們,他們的工作。但是,TextField本身並不能正確顯示光標位置的變化。 如果文本超出了字段的範圍,並且將光標移出字段的範圍,則字段本身不會刷新。我的意思是光標完全按照它的樣子,但它離開了可見區域。 所以問題是,如何使UITextField刷新?Xcode。 UITextField自定義鍵盤:箭頭按鈕

張貼我爲按鈕的代碼,這在左移動光標: (就像與0長度選擇在x位置文本)

//對象 - 是我的UITextField // POS - 的位置光標

-(IBAction)moveLeft:(UIButton*)sender{ 
UITextRange *selectedRange = [object selectedTextRange]; 
int pos = [object offsetFromPosition:object.endOfDocument toPosition:selectedRange.start]; 
if ([object.text length]+pos>0){ 
     NSRange range= NSMakeRange([object.text length]+pos-1, 0); 

     UITextPosition *start = [object positionFromPosition:[object beginningOfDocument] 
                 offset:range.location]; 
     UITextPosition *end = [object positionFromPosition:start 
                offset:range.length]; 
     [object setSelectedTextRange:[object textRangeFromPosition:start toPosition:end]]; 
     **[self updateTextField];** 
    }  
} 

如何使此「updateTextField」方法?

回答

0

我最近在使用PKCustomKeyboard時做了這個。

- (IBAction)leftArrowPressed:(id)sender 
{ 
    [[UIDevice currentDevice] playInputClick]; 
    UITextRange *selectedRange = [(UITextField *)self.textView selectedTextRange]; 
    UITextPosition *startPosition = [(UITextField *)self.textView positionFromPosition :[(UITextField *)self.textView beginningOfDocument] offset : 0]; 

    if (![(UITextField *)self.textView offsetFromPosition : selectedRange.start toPosition : startPosition] == 0) 
    { 
     // Calculate the new position, - for left and + for right 
     UITextPosition *newPosition = [(UITextField *)self.textView positionFromPosition : selectedRange.start offset : -1]; 

     // Construct a new range using the object that adopts the UITextInput, our textfield 
     UITextRange *newRange = [(UITextField *)self.textView textRangeFromPosition : newPosition toPosition : newPosition]; 

     // Set new range 
     [(UITextField *)self.textView setSelectedTextRange : newRange]; 
    } 
} 

您需要引用UIInputView的TextView。 (PKCustomKeyboard做到這一點)

@property (strong) id<UITextInput> textView; 
相關問題