2010-01-01 100 views
3

我被困在了這裏,滾動到滾動型/滾動視圖停止滾動特定的文本框,當鍵盤在屏幕上

我有一個自定義的滾動視圖當前滾動視圖有一個附加字段按鈕,它可以讓用戶視圖向滾動視圖添加新的文本字段。當用戶點擊一個特定的文本框的鍵盤出現在和隱藏的文本框,來克服這個我也跟着UICatalog例子,但它

移動整個滾動視圖,以防止這種情況我也跟着UICatalog例子,這樣做,

-(void)textFieldDidBeginEditing:(UITextField *)sender 
{ 

if (sender.frame.origin.y>109) { 
    moveScrollViewUpBy=(sender.frame.origin.y-109+10); 

    [self viewMovedUp:YES]; 
} 
} 


-(void)viewMovedUp:(BOOL)movedUp 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

CGRect rect = formScrollView.frame; 
if (movedUp) 
{ 
    if(rect.origin.y == 0.0f){ 
     rect.origin.y -= kOFFSET_FOR_KEYBOARD; 
     rect.size.height += kOFFSET_FOR_KEYBOARD; 
    } 
} 
else 
{ 
    if(rect.origin.y != 0.0f){ 
     rect.origin.y += kOFFSET_FOR_KEYBOARD; 
     rect.size.height -= kOFFSET_FOR_KEYBOARD; 
    } 
} 
self.formScrollView = rect; 


[UIView commitAnimations]; 
} 

這裏

#define kOFFSET_FOR_KEYBOARD 160.0 

但這種轉移滾動視圖時,

我想,當我在滾動視圖輕按一個文本框下方向下...的滾動視圖滾動並出現一個文本框....

是有可能這樣做....否則建議我一些其他的解決辦法

我多了一個查詢srollview只停留在鍵盤滾動留在屏幕上。有沒有什麼辦法可以解決這個問題

回答

2

你可能只想設置scrollView的contentOffset屬性,而不是調整其邊界。

+0

thnx支持讓我試試看看 – 2010-01-01 07:07:53

1

落實UITextViewDelegate並執行以下操作:

- (void)textViewDidBeginEditing:(UITextView *)textView { 

    keyboardShowing = YES; //helper ivar 
    [self sizeToOrientation]; 
    [self.scrollView scrollRectToVisible:textView.frame animated:YES]; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    keyboardShowing = NO; 
    [self sizeToOrientation]; 
} 

Helper方法:

//fit to the appropriate view sizes 
- (void)sizeToOrientation { 
    CGSize size; 
    if(keyboardShowing) 
     size = CGSizeMake(320, 190); //make room for keyboard 
    else 
     size = CGSizeMake(320, 420); //full height with tabbar on bottom 

    self.scrollView.frame = CGRectMake(0, 0, size.width, size.height); 
} 

這很適合我。

+0

你搖滾花花公子........ thnx很多 – 2010-01-01 18:05:38

+0

......這是爲什麼這個投票下來?這似乎很有幫助。 – jocull 2010-11-01 14:46:29

+0

有更正確的方法來做到這一點。 sizeToOrientation方法需要用鍵盤通知來替換。我稍後會更新我的答案。 – bentford 2010-11-01 18:19:37