2012-07-25 6 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

+0

을 사용할 수 있습니다, 그럼 나는 IB가 UITextView 서브 클래스를 볼 것으로 판단된다. 따라서 IB에서는 UITextView에서 캔버스로 드래그합니다. 그런 다음 해당 클래스를 MyTextView로 변경해야합니다. 그럼 콘센트 등을 만들 수 있습니다. –

+0

지금은 작동하지만 오류가 발생합니다. 너 y 알아? 'NSRangeException'이라는 캐치되지 않은 예외로 인해 앱이 종료됩니다. 이유 : '*** - [__ NSCFString substringFromIndex :] : 범위 또는 범위를 벗어나는 인덱스' – BDGapps