2012-04-11 91 views
0

我已經研究如何手動包括在UITextView中的佔位符文本(因爲有許多在計算器上),然而,每當我點擊的TextView並開始打字,它不會刪除佔位,我不知道爲什麼。任何幫助表示讚賞!謝謝!自定義的UITextView佔位符不刪除在鍵盤輸入

#import "HusbandryAddRecord.h" 
#import <QuartzCore/QuartzCore.h> 

@interface HusbandryAddRecord() 

@end 

@implementation HusbandryAddRecord 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [scroller setScrollEnabled:YES]; 
    [scroller setContentSize:CGSizeMake(320, 601)]; 

    // Round The Corners of the Notes TextView 
    notesTV.clipsToBounds = YES; 
    notesTV.layer.cornerRadius = 10.0f; 

    placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 0.0, notesTV.frame.size.width - 20.0, 34.0)]; 
    [placeholderLabel setText:@"Notes"]; 
    [placeholderLabel setBackgroundColor:[UIColor clearColor]]; 
    [placeholderLabel setFont:[UIFont fontWithName:@"System" size:14.0]]; 
    [placeholderLabel setTextColor:[UIColor lightGrayColor]]; 

    [notesTV addSubview:placeholderLabel]; 
} 

- (void)viewDidUnload 
{ 
    [notesTV release]; 
    notesTV = nil; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (void)dealloc { 
    [notesTV release]; 
    [super dealloc]; 
} 

- (void) textViewDidChange:(UITextView *)theTextView { 
    if(![theTextView hasText]) { 
     [theTextView addSubview:placeholderLabel]; 
     [placeholderLabel setText:@"Notes"]; 
    } 

    else if ([[theTextView subviews] containsObject:placeholderLabel]) { 
     [placeholderLabel removeFromSuperview]; 
    } 
} 

- (void)textViewDidEndEditing:(UITextView *)theTextView { 
    if (![theTextView hasText]) { 
     [theTextView addSubview:placeholderLabel]; 
    } 
} 

@end 
+0

我看錯第一件事是,你在談論修改的佔位符文本。 UITextField,但上面的是爲UILabel定義屬性,然後將標籤文本應用於文本字段。 – 2012-04-11 06:06:16

+0

是的。 UITextFields沒有PlaceHolder。這就是爲什麼我的標題是「自定義UITextView佔位符」。這是UITextView沒有佔位符的解決方案之一。 – comead 2012-04-11 06:12:59

+0

對不起,錯字。漠視。 – 2012-04-11 06:18:44

回答

1

請告訴我真正發生的事情是要添加標籤,你的TextView的每個輸入查詢字符。因此,如果您鍵入字符並且條件符合,則只能刪除一個標籤,並且可以看到下面的標籤,然後再創建一個標籤。

請確保您有委託正確設置,然後使用,而不是添加和移除子視圖中隱藏屬性。

- (void)textViewDidChange:(UITextView *)textView 
{ 
    placeholderLabel.hidden = textView.hasText; 
} 
+0

這也沒有工作..:/ – comead 2012-04-11 05:54:29

+0

你確定委託被調用。你是否將代表設置爲textview? – iPrabu 2012-04-11 05:56:40

+0

WHOOPS!哈哈。我無意中將代表錯誤地設置了。感謝您的幫助!它的工作非常棒! – comead 2012-04-11 06:01:38

0

使用下面的代碼它會幫助你..

-(void)textViewDidChange:(UITextView *)textView 
{ 
    if([textView.text length]>0){ 
     placeholderLabel.hidden = YES; 
    }else { 
     placeholderLabel.hidden = NO; 
    } 

} 
+0

nope也沒有做任何事情。 – comead 2012-04-11 05:51:26

+0

你已經在UITextView委託方法中刪除了placeholderLabel的所有代碼,那麼它將工作 – Narayana 2012-04-11 05:52:50

0

您在TextView中添加placeHolderLabel輸入每個character.Have看看這個代碼: -

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 
{ 
[placeholderLabel removeFromSuperview]; 
return YES; 
} 

當你正在用的TextView文本的寫作做了這個時間寫代碼後。

-(IBAction)keyBoard:(id)sender 
{ 
if ([textView.text length]==0) 
{ 
    [textView addSubview:placeholderLabel]; 
} 
[textView resignFirstResponder]; 
} 

這個功能是按鈕,我已經把這個鍵盤的textview.On點擊外將dissmiss,它會檢查是否有TextView的文本0長度則placeHolderLabel將再次it.Hope添加它幫助。謝謝:)

0

使用lines.It工作

textviewname.editable = YES; textviewname.clearsContextBeforeDrawing = YES;