cocoa – NSTextView的自定义插入点

cocoa – NSTextView的自定义插入点,第1张

概述我通过覆盖更改插入点大小 – (void)drawInsertionPointInRect:(NSRect)aRect颜色:(NSColor *)aColor turnsOn:(BOOL)标志,但它不处理第一次闪烁(当您移动插入点时,它恢复正常) 我设法通过重写私有方法来处理第一次闪烁 – (void)_drawInsertionPointInRect:(NSRect)aRect颜色:(NSCol 我通过覆盖更改插入点大小 – (voID)drawInsertionPointInRect:(NSRect)aRect颜色:(NScolor *)acolor turnsOn:(BOol)标志,但它不处理第一次闪烁(当您移动插入点时,它恢复正常)

我设法通过重写私有方法来处理第一次闪烁 – (voID)_drawInsertionPointInRect:(NSRect)aRect颜色:(NScolor *)acolor.

但这对我来说不是一个解决方案,因为重写私有方法将导致App Store下降.我希望该应用程序在App Store中.我看到像iAWriter和Writeroom这样的应用程序有一个自定义插入点,它们在App Store中.

有谁知道他们如何设法做到这一点,或者更好的方式而不是覆盖私有方法?

谢谢.

- (voID)_drawInsertionPointInRect:(NSRect)aRect color:(NScolor *)acolor{    aRect.size.wIDth = 3.0;    [acolor set];    [NSBezIErPath fillRect:aRect];}- (voID)drawInsertionPointInRect:(NSRect)aRect color:(NScolor *)acolor turnedOn:(BOol)flag{    if(flag) {        aRect.size.wIDth = 3.0;        [acolor set];        [NSBezIErPath fillRect:aRect];    }    else {        [self setNeedsdisplayInRect:[self visibleRect] avoIDAdditionalLayout:NO];    }}@H_502_20@解决方法 问题是调用drawInsertionPointInRect时生效的剪切路径.  

- (voID)drawInsertionPointInRect:(NSRect)rect color:(NScolor *)color turnedOn:(BOol)flag {    rect.size.wIDth = 8.0;    NSBezIErPath * path = [NSBezIErPath bezIErPathWithRect:rect];    [path setClip]; // recklessly set the clipPing area (testing only!)    [path fill];}@H_502_20@  

请注意,上面的代码将留下工件(在我的测试中,不会调用drawInsertionPointInRect来清除插入点,只是为了绘制它).使用setDrawsBackground:YES以快速而脏的方式清除工件.

总结

以上是内存溢出为你收集整理的cocoa – NSTextView的自定义插入点全部内容,希望文章能够帮你解决cocoa – NSTextView的自定义插入点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1024177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存