Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8.1];
http://mevius.2ch.net/test/read.cgi/tech/1414816517/
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/
Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
Objective-C [ObjC part:9];
■ このスレッドは過去ログ倉庫に格納されています
2017/11/17(金) 21:00:33.77ID:oYmLZZ1y
2019/05/20(月) 03:32:50.77ID:b4QONOVW
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextAttributes/Concepts/AboutTextAttributes.html#//apple_ref/doc/uid/20001804-BBCFEBHA
Temporary Attributes
で指定して
drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
で描画するコードを書く
かな
Cocoaブリッジを使って〜とかなんで自分でやらなきゃならない&どこまでCCocoaなのかわからんけど
Temporary Attributes
で指定して
drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
で描画するコードを書く
かな
Cocoaブリッジを使って〜とかなんで自分でやらなきゃならない&どこまでCCocoaなのかわからんけど
10098
2019/05/20(月) 07:42:36.82ID:fPO8FQDL >>99
どうもです。
文字は、Mac版では最終的には Core Text で描かれるのですけど、自分がやらなくてはならないのは IM から
受け取った NSAttributedString を直接描くのではなく、それをその言語のテキストオブジェクトに反映させる
(それは既存の仕組みで結果的に描かれる)ということをしなくてはならないのです。
その NSAttributedString そのものを Cocoa フレームワークなり Core Text フレームワークなりに引き渡して描か
せられれば、多分アンダーラインもいつも見ている形で勝手に表現されると予想してるんですが、それが出来ないのが
辛いところで。それでアトリビュートを解析する必要があるのです。
その言語のGUIにはアンダーラインを表示する仕組みがないので、そっちは自分でOpenGLで描かねばならんのですが...
どこまで Cocoa なのかは、NSAttributedString から文字列と、そのアトリビュート情報を取り出すまで、ということ
になります。
どうもです。
文字は、Mac版では最終的には Core Text で描かれるのですけど、自分がやらなくてはならないのは IM から
受け取った NSAttributedString を直接描くのではなく、それをその言語のテキストオブジェクトに反映させる
(それは既存の仕組みで結果的に描かれる)ということをしなくてはならないのです。
その NSAttributedString そのものを Cocoa フレームワークなり Core Text フレームワークなりに引き渡して描か
せられれば、多分アンダーラインもいつも見ている形で勝手に表現されると予想してるんですが、それが出来ないのが
辛いところで。それでアトリビュートを解析する必要があるのです。
その言語のGUIにはアンダーラインを表示する仕組みがないので、そっちは自分でOpenGLで描かねばならんのですが...
どこまで Cocoa なのかは、NSAttributedString から文字列と、そのアトリビュート情報を取り出すまで、ということ
になります。
101デフォルトの名無しさん
2019/05/20(月) 09:39:20.61ID:b4QONOVW んー、よくわからんw
IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
>>98の
>setMarkedText:selectedRange:〜
はそれで文節を得ようとしてもできなかったということか、単に。「切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
であれば、あとちょっとだけじゃないのかな
setMarkedText:string 〜 selectedRange:
の、string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。それででいいんじゃないかな。他のIM(Google)だとどうなんだろ、同じような気がしないでもない、いや、同じでじゃないと困るかな
NSLog(@"%@", string); すると、
私の{
NSMarkedClauseSegment = 0;
NSUnderline = 2;
}名前は{
NSMarkedClauseSegment = 1;
NSUnderline = 1;
}中野です{
NSMarkedClauseSegment = 2;
NSUnderline = 1;
}
のように、そのまんまのようだけど
IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
>>98の
>setMarkedText:selectedRange:〜
はそれで文節を得ようとしてもできなかったということか、単に。「切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
であれば、あとちょっとだけじゃないのかな
setMarkedText:string 〜 selectedRange:
の、string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。それででいいんじゃないかな。他のIM(Google)だとどうなんだろ、同じような気がしないでもない、いや、同じでじゃないと困るかな
NSLog(@"%@", string); すると、
私の{
NSMarkedClauseSegment = 0;
NSUnderline = 2;
}名前は{
NSMarkedClauseSegment = 1;
NSUnderline = 1;
}中野です{
NSMarkedClauseSegment = 2;
NSUnderline = 1;
}
のように、そのまんまのようだけど
102デフォルトの名無しさん
2019/05/20(月) 09:41:09.96ID:b4QONOVW >切れ目のところでも同じアンダーラインが連続しているって描画」かなと思った
切れ目のところでも同じアンダーラインが連続している」って描画かなと思った
>setMarkedText:string 〜 selectedRange:
setMarkedText:string selectedRange:〜
切れ目のところでも同じアンダーラインが連続している」って描画かなと思った
>setMarkedText:string 〜 selectedRange:
setMarkedText:string selectedRange:〜
10398
2019/05/20(月) 10:04:15.41ID:+/LM9KJj >>101
>string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。
素晴らしい情報、ありがとうございます! これで問い合わせれば行けそうな気がします。
アンダーラインのアトリビュートで表現されていると思っていたのと、他のアトリビュートを
見つけられなかったのが問題でした。帰ったら試してみます。
> IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する
> 必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
そうなんです。未確定文字列の文節を見つけたいということです。
この例で示していただいた「私の名前は中野です」の「名前は」と「中野です」が、両方共
NSUnderline = 1だからなのか、attribute:atIndex:effectiveRange: の指定アトリビュートをNSUnderlineStyleAttributeName にすると同じレンジで回答されてしまって切り出せなかった
のです。
もう少し私も賢くなりたいので、NSLog(@"%@", string); をどこに書いてこれを調べられたのか
教えていただけませんか。それがわかっていれば、お手を煩わせることもなかったはず。
>string の NSMarkedClauseSegmentAttributeName の値で文節を表しているっぽいけど。
素晴らしい情報、ありがとうございます! これで問い合わせれば行けそうな気がします。
アンダーラインのアトリビュートで表現されていると思っていたのと、他のアトリビュートを
見つけられなかったのが問題でした。帰ったら試してみます。
> IMで入力中の文節を知りたいの?描画を自分でするんでなくて。「アトリビュートを解析する
> 必要がある」「アンダーラインを表示する仕組みがない〜自分でOpenGLで描かねば」てことは
そうなんです。未確定文字列の文節を見つけたいということです。
この例で示していただいた「私の名前は中野です」の「名前は」と「中野です」が、両方共
NSUnderline = 1だからなのか、attribute:atIndex:effectiveRange: の指定アトリビュートをNSUnderlineStyleAttributeName にすると同じレンジで回答されてしまって切り出せなかった
のです。
もう少し私も賢くなりたいので、NSLog(@"%@", string); をどこに書いてこれを調べられたのか
教えていただけませんか。それがわかっていれば、お手を煩わせることもなかったはず。
104デフォルトの名無しさん
2019/05/20(月) 10:06:45.75ID:b4QONOVW アトリビュートの内容自体も知らんでいいっぽいかな。文節毎の文字数がわかればいいだろう的では、
NSMutableArray *wardLengthList = [[NSMutableArray alloc] init];
const NSUInteger length = string.length;
NSUInteger index = 0;
while( index < length ){
NSRange range;
[string attributesAtIndex:index effectiveRange:&range];
[wardLengthList addObject:@(range.length)];
index = range.location + range.length;
}
NSLog( @"%@", wardLengthList );
で、よさげ
NSMutableArray *wardLengthList = [[NSMutableArray alloc] init];
const NSUInteger length = string.length;
NSUInteger index = 0;
while( index < length ){
NSRange range;
[string attributesAtIndex:index effectiveRange:&range];
[wardLengthList addObject:@(range.length)];
index = range.location + range.length;
}
NSLog( @"%@", wardLengthList );
で、よさげ
105デフォルトの名無しさん
2019/05/20(月) 10:08:16.92ID:b4QONOVW10698
2019/05/20(月) 11:15:32.69ID:+/LM9KJj >>105
>setMarkedText:〜
>の最初
NSTextInputClient を実装した View を作って、その setMarkedText:〜の最初に書いた
ということですか? 既存の View を継承して、setMarkedText:〜だけオーバーライド
すればいいのかな。いずれにしても、ありがとうございました。
>setMarkedText:〜
>の最初
NSTextInputClient を実装した View を作って、その setMarkedText:〜の最初に書いた
ということですか? 既存の View を継承して、setMarkedText:〜だけオーバーライド
すればいいのかな。いずれにしても、ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」★2 [ぐれ★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★5 [蚤の市★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★5 [蚤の市★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- ムミィ🥺いる❓🏡
- 鈴木農水大臣「物価高対策でお米券1枚477円で販売します☺」 [931948549]
- ぼく「これまだ要ります?」上司「一応取っとこ」ぼく「ハム太郎?」←こいつ
- Pornhub「米国内で最もシコられたキャラはチュンリー、2B、そして…」 [347751896]
- ママカースト、地獄すぎるwwwwwwwwwwwwwwwwwwwww [977790669]
- mRNAワクチンを打ったやつ、心臓が損傷している模様 [793187428]
