2012-07-25 53 views
0

我想重寫uitextview類中的一個方法,我想在我正在工作的類中做到這一點,但我無法讓它工作。我只看到人們在一個單獨的課程中重寫它。謝謝。覆蓋UITextView

#import <UIKit/UIKit.h> 
@interface MyTextView : UITextView 

@end 
@interface ViewController : UIViewController 
@property (nonatomic, retain) IBOutlet MyTextView * tv; 

@end 





////////////////////////////////// 





    #import "ViewController.h" 



@implementation MyTextView 

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender  
{  
    [UIMenuController sharedMenuController].menuVisible = NO; //do not display the menu 
    // [self resignFirstResponder];      //do not allow the user to selected anything 
    return NO; 
} 

@end 


@implementation ViewController 
@synthesize tv; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    tv = [[MyTextView alloc] init]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
    } else { 
     return YES; 
    } 
} 
-(void)textViewDidChangeSelection:(MyTextView *)textView 
{ 
    NSRange range = textView.selectedRange; 
    if(range.location<textView.text.length) 
    { 
     NSString * getRidOfFirstHalfString = [tv.text substringFromIndex:range.location]; 
     NSString * selectedString = [getRidOfFirstHalfString substringToIndex:range.length]; 


     NSLog(@"%@",selectedString); 

    } 
    else 
    { 
     // Do what ever you want to do 

    } 
} 
@end 

回答

1

把你的類的頂部:

@interface MyTextView : UITextView 

@end 

@implementation MyTextView 

- (xxx)overRidedMethod 
{ 
    // do something 
} 

@end 

... your class 
{ 
    MyTextView *foo = [MyTextView alloc] init.....] 
+0

我可以使用IBOutlet中 – BDGapps 2012-07-25 00:28:33

+0

如果你把出口在實現文件中,那麼我相信IB會看到UITextView的子類。所以在IB中,您將把UITextView拖入畫布中。然後您需要將其類更改爲MyTextView。然後你可以做一個插座等 – 2012-07-25 00:31:23

+0

好了,現在的作品,但我得到一個錯誤。你知道嗎?終止應用程序由於未捕獲的異常'NSRangeException',原因:'*** - [__ NSCFString substringFromIndex:]:範圍或索引超出範圍' – BDGapps 2012-07-25 01:37:15