У меня есть приложение чата PWA, созданное с помощью Nextjs, и я вижу эту ошибку. Высота текстовой области динамически изменяется для размещения более длинных сообщений.
Я не могу на 100% надежно воспроизвести ошибку, но быстрый набор или удаление нескольких строк, похоже, помогает. Мне также не удалось воспроизвести его на Android.
Пример ошибки
Пример ошибки 2
Я пробовал настроить дополнение и удаление строк, и проблема, по-видимому, относится только к iOS.
Код для компонента:
import { Textarea, TextareaProps } from '@/components/ui/textarea'
import { useBounds } from '@/hooks/bounds'
import { cn } from '@/utils/utils'
import React, { useEffect, useRef, useState } from 'react'
interface IProps extends TextareaProps {
isLoading?: boolean
formRef?: React.RefObject
}
export const Input = ({ className, isLoading, formRef, ...rest }: IProps) => {
const ref = useRef(null)
useEffect(() => {
if (ref.current) {
const textarea = ref.current
textarea.style.height = '0px'
const scrollHeight = textarea.scrollHeight
textarea.style.height = scrollHeight + 'px'
}
}, [ref, rest.value])
const { isDesktop } = useBounds()
return (
{
if(isDesktop && e.key.toLowerCase() === 'enter' && !e.shiftKey) {
e.preventDefault();
formRef?.current?.requestSubmit();
}
}}
className={cn('resize-none overflow-y-hidden px-3 py-2.5 bg-background', className)}
{...rest}
/>
)
}
И компонент Textarea:
import * as React from 'react'
import { cn } from '@/utils/utils'
export interface TextareaProps extends React.TextareaHTMLAttributes {}
const Textarea = React.forwardRef(
({ className, ...props }, ref) => {
return (
)
}
)
Textarea.displayName = 'Textarea'
export { Textarea }
Подробнее здесь: https://stackoverflow.com/questions/784 ... rea-on-ios
React - курсор выходит за границы текстовой области на iOS ⇐ IOS
Программируем под IOS
-
Anonymous
1715620717
Anonymous
У меня есть приложение чата PWA, созданное с помощью Nextjs, и я вижу эту ошибку. Высота текстовой области динамически изменяется для размещения более длинных сообщений.
Я не могу на 100% надежно воспроизвести ошибку, но быстрый набор или удаление нескольких строк, похоже, помогает. Мне также не удалось воспроизвести его на Android.
Пример ошибки
Пример ошибки 2
Я пробовал настроить дополнение и удаление строк, и проблема, по-видимому, относится только к iOS.
Код для компонента:
import { Textarea, TextareaProps } from '@/components/ui/textarea'
import { useBounds } from '@/hooks/bounds'
import { cn } from '@/utils/utils'
import React, { useEffect, useRef, useState } from 'react'
interface IProps extends TextareaProps {
isLoading?: boolean
formRef?: React.RefObject
}
export const Input = ({ className, isLoading, formRef, ...rest }: IProps) => {
const ref = useRef(null)
useEffect(() => {
if (ref.current) {
const textarea = ref.current
textarea.style.height = '0px'
const scrollHeight = textarea.scrollHeight
textarea.style.height = scrollHeight + 'px'
}
}, [ref, rest.value])
const { isDesktop } = useBounds()
return (
{
if(isDesktop && e.key.toLowerCase() === 'enter' && !e.shiftKey) {
e.preventDefault();
formRef?.current?.requestSubmit();
}
}}
className={cn('resize-none overflow-y-hidden px-3 py-2.5 bg-background', className)}
{...rest}
/>
)
}
И компонент Textarea:
import * as React from 'react'
import { cn } from '@/utils/utils'
export interface TextareaProps extends React.TextareaHTMLAttributes {}
const Textarea = React.forwardRef(
({ className, ...props }, ref) => {
return (
)
}
)
Textarea.displayName = 'Textarea'
export { Textarea }
Подробнее здесь: [url]https://stackoverflow.com/questions/78473803/react-cursor-escaping-boundaries-of-textarea-on-ios[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия