覆盖UITextView
问题描述:
我想重写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
答
把你的类的顶部:
@interface MyTextView : UITextView
@end
@implementation MyTextView
- (xxx)overRidedMethod
{
// do something
}
@end
... your class
{
MyTextView *foo = [MyTextView alloc] init.....]
我可以使用IBOutlet中 – BDGapps 2012-07-25 00:28:33
如果你把出口在实现文件中,那么我相信IB会看到UITextView的子类。所以在IB中,您将把UITextView拖入画布中。然后您需要将其类更改为MyTextView。然后你可以做一个插座等 – 2012-07-25 00:31:23
好了,现在的作品,但我得到一个错误。你知道吗?终止应用程序由于未捕获的异常'NSRangeException',原因:'*** - [__ NSCFString substringFromIndex:]:范围或索引超出范围' – BDGapps 2012-07-25 01:37:15